草庐IT

c# - 使用 == 比较两个结构

我正在尝试在C#中使用等号(==)比较两个结构。我的结构如下:publicstructCisSettings:IEquatable{publicintGain{get;privateset;}publicintOffset{get;privateset;}publicintBright{get;privateset;}publicintContrast{get;privateset;}publicCisSettings(intgain,intoffset,intbright,intcontrast):this(){Gain=gain;Offset=offset;Bright=brigh

c# - 非唯一枚举值

我试图模糊edi文件上的索引位置...我遇到过这样一种情况,根据情况,索引中可能有2或3个东西。使用枚举来隐藏“魔数(MagicNumber)”会很酷,并且惊讶地发现您可以像这样将多个枚举分配给相同的值:publicenumColor{Red=1,Blue=1,Green=1}编译器对此很满意。我没想到这会奏效。我不需要转换回枚举,所以我不担心尝试返回,但这闻起来很时髦。为什么CLR允许枚举有多个值,我应该为此使用结构吗?(结构似乎比枚举更重,这似乎有效) 最佳答案 实际上您已经定义了一个结构...在幕后,枚举只是一个结构(但它派生

c# - 非唯一枚举值

我试图模糊edi文件上的索引位置...我遇到过这样一种情况,根据情况,索引中可能有2或3个东西。使用枚举来隐藏“魔数(MagicNumber)”会很酷,并且惊讶地发现您可以像这样将多个枚举分配给相同的值:publicenumColor{Red=1,Blue=1,Green=1}编译器对此很满意。我没想到这会奏效。我不需要转换回枚举,所以我不担心尝试返回,但这闻起来很时髦。为什么CLR允许枚举有多个值,我应该为此使用结构吗?(结构似乎比枚举更重,这似乎有效) 最佳答案 实际上您已经定义了一个结构...在幕后,枚举只是一个结构(但它派生

c# - 通用约束,其中 T : struct and where T : class

我想区分以下情况:普通值类型(例如int)可空值类型(例如int?)引用类型(例如string)-可选,我不关心它是否映射到上面的(1)或(2)我想出了以下代码,它适用于情况(1)和(2):staticvoidFoo(Ta)whereT:struct{}//1staticvoidFoo(T?a)whereT:struct{}//2但是,如果我尝试像这样检测案例(3),它不会编译:staticvoidFoo(Ta)whereT:class{}//3错误消息是类型“X”已经用相同的参数类型定义了一个名为“Foo”的成员。好吧,不知何故,我无法区分whereT:struct和whereT:c

c# - 通用约束,其中 T : struct and where T : class

我想区分以下情况:普通值类型(例如int)可空值类型(例如int?)引用类型(例如string)-可选,我不关心它是否映射到上面的(1)或(2)我想出了以下代码,它适用于情况(1)和(2):staticvoidFoo(Ta)whereT:struct{}//1staticvoidFoo(T?a)whereT:struct{}//2但是,如果我尝试像这样检测案例(3),它不会编译:staticvoidFoo(Ta)whereT:class{}//3错误消息是类型“X”已经用相同的参数类型定义了一个名为“Foo”的成员。好吧,不知何故,我无法区分whereT:struct和whereT:c

C# 静态类与预定义字符串的结构

一位同事刚刚在C#中创建了以下构造(示例代码已简化)。他的目标是缩短代码其余部分中所有预定义字符串的表示法。publicstructPredefinedStrings{publicconststringVeryLongName="VeryLongName";publicconststringAnotherVeryLongName="AnotherVeryLongName";publicconststringTheLastVeryLongName="TheLastVeryLongName";}publicstaticvoidMethodThatUsesTheNames(){Console

C# 静态类与预定义字符串的结构

一位同事刚刚在C#中创建了以下构造(示例代码已简化)。他的目标是缩短代码其余部分中所有预定义字符串的表示法。publicstructPredefinedStrings{publicconststringVeryLongName="VeryLongName";publicconststringAnotherVeryLongName="AnotherVeryLongName";publicconststringTheLastVeryLongName="TheLastVeryLongName";}publicstaticvoidMethodThatUsesTheNames(){Console

C# struct new StructType() 与 default(StructType)

假设我有一个结构publicstructFoo{...}有什么区别吗Foofoo=newFoo();和Foofoo=default(Foo);? 最佳答案 您可能想知道,如果它们完全相同,为什么有两种方法可以做同样的事情。它们并不完全相同,因为每个引用类型或值类型都保证有一个默认值但不是每个引用类型都保证有一个无参数构造函数:staticTMakeDefault(){returndefault(T);//legal//returnnewT();//illegal} 关于C#structn

C# struct new StructType() 与 default(StructType)

假设我有一个结构publicstructFoo{...}有什么区别吗Foofoo=newFoo();和Foofoo=default(Foo);? 最佳答案 您可能想知道,如果它们完全相同,为什么有两种方法可以做同样的事情。它们并不完全相同,因为每个引用类型或值类型都保证有一个默认值但不是每个引用类型都保证有一个无参数构造函数:staticTMakeDefault(){returndefault(T);//legal//returnnewT();//illegal} 关于C#structn

c# - 为什么需要调用:this() on a struct to use automatic properties in c#?

如果我在C#中使用这样的自动属性定义结构:publicstructAddress{publicAddress(stringline1,stringline2,stringcity,stringstate,stringzip){Line1=line1;Line2=line2;City=city;State=state;Zip=zip;}publicstringLine1{get;protectedset;}publicstringLine2{get;protectedset;}publicstringCity{get;protectedset;}publicstringState{get