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 --------------------编程问答--------------------
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 --------------------编程问答--------------------
因为对于C#语言来说就两种基本类型stuct,class --------------------编程问答--------------------
这样的话,不会影响程序运行效率吗?还有内存占用。
毕竟计算机处理一个int比处理struct和class要快多了 --------------------编程问答--------------------
.net是细分很明确的,一层一层上来的,所使用的函数,属性等也是一层层继承上来的,如果按你所说的,每一个类型不去继承前面有的相同特征的已有类型,那么所有的方法,属性等全部都会重新写一遍,这样不但很乱,实现起来也很麻烦,int是不是一个值类型,如果是那么它就是struct,它能继承struct的所有方法和属性,加上以现在计算机的效率,struct跟int处理起来根本没有什么区别
补充:.NET技术 , C#