相关疑难解决方法(0)

为什么我不能以ennt关闭UInt16?

鉴于以下代码:

static void Main()
{
    Console.WriteLine(typeof(MyEnum).BaseType.FullName);
}

enum MyEnum : ushort
{
    One = 1,
    Two = 2
}
Run Code Online (Sandbox Code Playgroud)

它输出System.Enum,这意味着这里的冒号与继承无关,它只是指定了枚举的基本类型,对不对?

但是,如果我更改我的代码如下:

enum MyEnum : UInt16
{
    One = 1,
    Two = 2
}
Run Code Online (Sandbox Code Playgroud)

我会得到一个编译错误.为什么?是不是UInt16ushort一样吗?

.net c#

13
推荐指数
2
解决办法
3585
查看次数

9
推荐指数
4
解决办法
1万
查看次数

如何从类型到TryParse方法?

我的特殊问题:

我有一个字符串,它在配置类中指定了aribitrary类型

Config.numberType = "System.Foo";

在哪里Foo是类型DecimalDouble

Type.GetType(Config.numberType)用来返回相应的类型.

如何从该类型中获得能够使用System.Foo.TryParse()

一些其他相关的查询

  • TryParse()可以从System.Foo.TryParse()以及访问foo.TryParse().这是否意味着fooC#中的某种类?这对我来说似乎很奇怪int,double等等实际上不仅仅是修饰符关键字.
  • 如何在这些情况下声明变量?- var似乎并非普遍可用,即仅在本地范围等.

c# parsing types

8
推荐指数
3
解决办法
7097
查看次数

C#.Net不区分大小写的字符串

为什么C#.Net允许字符串对象的声明不区分大小写?

String sHello = "Hello";
string sHello = "Hello";
Run Code Online (Sandbox Code Playgroud)

单词String的小写和大写S都是可接受的,这似乎是允许这个的唯一对象.

有谁能解释为什么?

.net c#

7
推荐指数
2
解决办法
2037
查看次数

是否可以在C#中创建System.Int32?

如果你深入了解C#中的值类型,那么编译器/ CLR会非常特别地对待它们.但是CLR内部的类型更加特殊.这就是我的意思:

int a = 5;
int b = 10;
int ? = a + b;
a.CompareTo(b);
Run Code Online (Sandbox Code Playgroud)

您可以将鼠标悬停int在Visual Studio中,看看它实际上是System.Int32struct.没关系.现在你可以抓住ILDasm并查看是什么System.Int32:转换它是一个非常简单的struct,有一个类型的字段int32(这是int32CLR的内部),并且没有重载的运算符用于添加.

那么,这int ? = a + b是如何工作的呢?我再次抓住ILDasm并研究IL.事实证明System.Int32IL代码中没有:编译器自动理解它应该替换它int32.并且IL指令add适用于int32堆栈中的几个.是什么使我感到有趣甚至更多,CLR允许呼叫实例方法System.Int32int32.看起来像是一些黑魔法给我.

所以,这里是纯粹的理论问题:看起来System.Int32像任何其他的类型,它可以用C#以某种方式创建吗?如果可以,你可以用它做任何有用的事情(实际int32领域是私人的)吗?

编辑:好的,为了使它更清楚:这个问题没有关于int别名的问题System.Int32.一个可以提供例如,更换intSystem.Int32和跳过例子后第一段.真正的问题是关于valuetype [mscorlib]System.Int32 a你的IL代码而不仅仅是的可能性int32 a.

c# clr

7
推荐指数
1
解决办法
1440
查看次数

System.Int32和int的MSIL会一样吗?

可能重复:
C#,int还是Int32?我应该关心吗?

请任何人告诉我System.Int32的MSIL和int将是相同或不同的,如果不同,那么我们应该使用哪一个.

编辑:

这不会编译

public  enum MyEnum : Int32
{
    AEnum = 0
}
Run Code Online (Sandbox Code Playgroud)

但这会

public enum MyEnum : int
{
    AEnum = 0
}
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net

5
推荐指数
1
解决办法
388
查看次数

如何定义命名空间范围的C#别名?

可以像这样在C#中定义别名

using kvp = System.Collections.Generic.KeyValuePair<string, string>;

var pair = new kvp("key", "value");
Run Code Online (Sandbox Code Playgroud)

Microsoft也定义了别名:

        int i;
        Int32 i2;
Run Code Online (Sandbox Code Playgroud)

我们如何定义命名空间中可用的别名?这是可配置的吗?


这个问题具体是关于别名......所以......不希望使用继承作为代理.在很多情况下我很满意......但是当你想要最好的描述性名称和速记版本时,我都不满意.

.net c# alias

5
推荐指数
2
解决办法
1149
查看次数

在 XML 文档中将 &lt;see cref=""/&gt; 与可选且可为空的参数结合使用

在为我的程序编写 XML 文档时,我在记录此方法时遇到了一个问题:

internal void MethodB(int i, DateTime? date = null);
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是特定于参数的date。正如您所看到的,它是可选的并且可以为 null。以下是我尝试记录此方法的方法:

/// <summary>
/// This method uses <see cref="MethodB(Int32, System.DateTime)"/> internally
/// todo some stuff.
/// </summary>
Run Code Online (Sandbox Code Playgroud)

具体来说,我收到一条编译器警告,表明无法解析cref的值。

如何修复 XML 文档注释,使其在编译时不会出现此警告?

c# documentation nullable optional-parameters visual-studio

5
推荐指数
1
解决办法
2272
查看次数

什么时候使用int与Int32,或字符串与String?

在C#中,内置类型的关键字只是System命名空间中相应类型的别名.

通常,使用关键字(例如int)或标识符(例如Int32)来引用内置类型没有区别.但是所有事情都有例外,所以我的问题分为两部分:

  1. C#何时要求您使用或不使用关键字?
  2. 何时使用关键字而不是标识符会改变程序的含义?

c# types

4
推荐指数
1
解决办法
507
查看次数

无法创建静态类'System.Tuple'的实例

我对这门语言很新.这段代码给了我错误:

无法创建静态类'System.Tuple'的实例

Operator '!=' cannot be applied to operands of type 'bool' and 'int'
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么.有人可以告诉我有什么问题

using(StreamReader rdr = new StreamReader("fileName"))
{
    StringBuilder sb = new StringBuilder();
    Int32 nc = 0;
    Char c;
    Int32 lineNumber = 0;
    while( (nc == rdr.Read() !=-1 ))
    {
        c = (Char)nc;
        if( Char.IsWhiteSpace(c) )
        {
            if( sb.Length > 0 )
            {
                yield return new Tuple( sb.ToString(), lineNumber );
                sb.Length = 0;
            }

            if( c == '\n' ) lineNumber++;
        } 
        else 
        {
            sb.Append( c );
        } …
Run Code Online (Sandbox Code Playgroud)

c# tuples

4
推荐指数
1
解决办法
1958
查看次数