Ale*_*lex 16 c# primitive-types
几天前,我决定开始学习C#.所以,我得到了一本书,开始阅读和练习代码.当我看到stringC#被认为是原始类型时,我感到很惊讶.
但是当我看到它时,我更加惊讶string,以及C#中的所有其他原始类型都有操作.我是一名Java开发人员,我的理解是原始数据类型没有操作,只有类有.但在C#中,以下内容有效:
string name = "alex";
Console.WriteLine(name.ToUpper());
Run Code Online (Sandbox Code Playgroud)
这怎么可能?他们真的是原始人吗?我在这里错过了什么?
jas*_*son 31
string在C#中不是原始类型.它是C#中两个预定义(即语言规范的一部分)引用类型之一(另一个是object).原始类型在C#是Boolean(bool), (Byte),byte( ),SByte(sbyte),Int16,short UInt16(Int32),UInt32int的(uint), (Int64),UINT64(long ),ulong, ,IntPtr(),UIntPtr (),和().需要注意的是规范规定"也可以使用结构和运算符重载实施新的'’在C#语言类型"原始但这是,如果是用户定义的.CharcharDoubledoubleSinglesingletypeof(MyStruct).IsPrimitivefalseMyStructstruct
我有一本书,开始阅读和练习代码.当我看到C#中的字符串被认为是原始类型时,我感到很惊讶.
书上说这个?哪本书?
我是一名Java开发人员,我的理解是原始数据类型没有操作,只有类有.
简单而言,C#和Java是不同的语言.在C#中object,几乎所有东西都是从中得出的(是的,有一些例外,其中最重要的是接口).从中object有一个名为的派生类型ValueType.衍生物ValueType是struct具有值语义秒.所有其他衍生物object都是参考类型.所有这些都object封装了数据和行为(即,它们可以有方法).
string name = "alex";
Console.WriteLine(name.ToUpper());这怎么可能?
我不明白你对这段代码的困惑.name是的实例string是肯定由字符串字面分配"alex",我们调用方法的重载之一String.ToUpper上name.然后调用Console.WriteLine接受实例的重载string.你甚至可以这样做
Console.WriteLine("alex".ToUpper());
Run Code Online (Sandbox Code Playgroud)
他们真的是原始人吗?
号string不是原始.
我在这里错过了什么?
C#和Java是相关但非常不同的编程语言.
Ree*_*sey 15
string在C#中,是一个类 - 它是System.String的别名.
但是,.NET中的所有类型都有方法.它确实是面向对象的,并且所有东西都派生自System.Object,这也意味着System.Object的方法适用于C#中的每个类型.
它们是.Net中与其匹配的系统命名空间类型的别名。这是.Net中值类型的别名列表的摘要:
| 归档时间: |
|
| 查看次数: |
6292 次 |
| 最近记录: |