当前位置:编程学习 > C#/ASP.NET >>

C#两个问题(基本数据类型和struct,引用类型加上ref)

1、在C#中,string和String是等价的,object和Object是等价的,但int和Int32是否等价?(类似的还有short和Int16,long和Int64等)
补充:在Visual Studio中,当鼠标指向int时,显示的是struct System.Int32

2、UdpClient类中有一个方法为

public byte[] Receive(ref IPEndPoint remoteEP)

IPEndPoint是类,本身属于引用类型,为什么还要加上ref,加不加有什么不同? --------------------编程问答-------------------- --------------------编程问答-------------------- 不加 ref 不管你怎么赋值都还是指向原来的内存地址。 加了才能得到新值 int 与int 32是否等价 这要看情况了。   
如果 是string  a="1";   (int)a   和  (int32)a    (int16)a  是不一样的      --------------------编程问答-------------------- 估计位宽不相同吧 --------------------编程问答-------------------- 加上ref 就相当于对原变量的引用,而不是传值了 --------------------编程问答-------------------- 1. int和Int32是等价的,int是int32的简写,其它类同
2. 加了ref之后引用是直接原来的变量,如果没有ref,调用方式时,会增加一个变量,保存引用变量的地址,这一变量传到方法里面 --------------------编程问答-------------------- --------------------编程问答-------------------- string和String是等价的,object和Object是等价的??????

等价??? --------------------编程问答-------------------- long和Int64都是System.Int64
int 和Int32都是System.Int32 --------------------编程问答--------------------
引用 8 楼 yezhendong185 的回复:
long和Int64都是System.Int64
int 和Int32都是System.Int32

string和String就是System.String咯 --------------------编程问答-------------------- ref 和Out 一样的处于返回。两个不同
http://topic.csdn.net/u/20090330/10/aee1f4fc-2006-4303-b615-046b81d3c5d7.html --------------------编程问答-------------------- ref给的可以返回。out的必须返回 --------------------编程问答-------------------- 1.应该是等价的
2,加了ref相当把真正的内存地址传入函数,在函数里的任何修(包括赋值)改都会影响这个变量,如果不加ref就相当于再建一个新变量指针指向原内存地址,如果传的参数是对象,那么对此对象的任何操作除了赋值都会改变原变量,但赋值操作就不行,如果传参数是值类型,那么在子函数中的任何操作都不会改变原变量的值
例如有一个类
class A{
 public int B=0;
}
有一函数
private void C(A a)
{
   a.B=99;
   a=new A();
   a.B=88;
}
A a=new A();
C(a);
Console.Writeln(a.B);
应该是输出99,而不 88
--------------------编程问答-------------------- 如果说int和Int32是一样的,是否可以认为C#中没有基本数据类型?因为最基本的int,其实是一个struct --------------------编程问答--------------------
引用 13 楼 daven172 的回复:
如果说int和Int32是一样的,是否可以认为C#中没有基本数据类型?因为最基本的int,其实是一个struct

因为对于C#语言来说就两种基本类型stuct,class --------------------编程问答--------------------
引用 14 楼 flashcom 的回复:
引用 13 楼 daven172 的回复:

如果说int和Int32是一样的,是否可以认为C#中没有基本数据类型?因为最基本的int,其实是一个struct

因为对于C#语言来说就两种基本类型stuct,class

这样的话,不会影响程序运行效率吗?还有内存占用。
毕竟计算机处理一个int比处理struct和class要快多了 --------------------编程问答--------------------
引用 15 楼 daven172 的回复:
引用 14 楼 flashcom 的回复:

引用 13 楼 daven172 的回复:

如果说int和Int32是一样的,是否可以认为C#中没有基本数据类型?因为最基本的int,其实是一个struct

因为对于C#语言来说就两种基本类型stuct,class

这样的话,不会影响程序运行效率吗?还有内存占用。
毕竟计算机处理一个int比处理struct和class要快多了……

.net是细分很明确的,一层一层上来的,所使用的函数,属性等也是一层层继承上来的,如果按你所说的,每一个类型不去继承前面有的相同特征的已有类型,那么所有的方法,属性等全部都会重新写一遍,这样不但很乱,实现起来也很麻烦,int是不是一个值类型,如果是那么它就是struct,它能继承struct的所有方法和属性,加上以现在计算机的效率,struct跟int处理起来根本没有什么区别
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,