草庐IT

c# - 年的参数类型

我正在编写一个接受年份作为参数的方法。IE。等于或小于当前年份的四位数。日历只是公历(目前......不确定future),我肯定不需要任何BC。我要使用哪种数据类型?显而易见的解决方案是使用DateTime或Int32:publicvoidMyFunction(DateTimedate){//yeartoworkwith:date.Year;//date.Month,date.Day,etc.isirrelevantandwillalwaysbe}或publicvoidMyFunction(Intyear){if(year>9999||otherValidations==false)

表示路径的 C#(非静态)类

我正在寻找一个C#类表示文件系统路径。我想使用它(而不是字符串)作为变量和方法参数的数据类型(主要原因:类型安全、concat-proof、逻辑比较)。System.IO.Path提供了我想要的大部分功能,但它是静态的。据我所知,System.IO.FileInfo执行IO操作以完成其工作。我只需要路径字符串的包装器。谢谢! 最佳答案 可能是图书馆NDepend.Helpers.FileDirectoryPath正是您要找的。它提供:强类型文件/目录路径。相对/绝对路径转换。路径规范化API路径有效性检查API路径比较API路径浏览

c# - 有没有办法连接 C# 匿名类型?

例如varhello=new{Hello="Hello"};varworld=new{World="World"};varhelloWorld=hello+world;Console.WriteLine(helloWorld.ToString());//outputs{Hello=Hello,World=World}有什么方法可以让它工作吗? 最佳答案 没有。你好和世界对象是不同类的对象。合并这些类的唯一方法是使用动态类型生成(Emit)。以下是此类连接的示例:http://www.developmentalmadness.com/

c# - 如何找到两种类型中最小的可分配类型(重复)?

这个问题在这里已经有了答案:Howtofindtheminimumcovarianttypeforbestfitbetweentwotypes?(3个答案)关闭9年前。这里有两种扩展方法可以使用publicstaticTypeFindInterfaceWith(thisTypetype1,Typetype2){//returnsmostsuitablecommonimplementedinterface}publicstaticTypeFindBaseClassWith(thisTypetype1,Typetype2){//returnsmostderivativeofcommonba

C# 将对象转换为十进制

我正在尝试将值为0.39999999999999997的对象转换为十进制变量而不丢失精度。objectd=0.39999999999999997;我尝试了以下方法。decimalval1=Convert.ToDecimal(d);//val1=0.4objectval2=Convert.ChangeType(d,Type.GetType("System.Decimal"));//val2=0.4decimalval3=decimal.Parse(d.ToString());//val3=0.4decimalval4=(Decimal)d;//val4=0.4我知道这不是十进制数据类型无

c# - 为什么不能使用 is 运算符来区分 bool 和 Nullable<bool>?

我遇到了这个,很好奇为什么不能使用is运算符区分bool和Nullable?示例;voidMain(){booltheBool=false;NullabletheNullableBoolThatsFalse=false;NullabletheNullableBoolThatsNull=null;voidWhatIsIt(objectvalue){if(valueisbool)Console.WriteLine("It'sabool!");if(valueisNullable)Console.WriteLine("It'saNullable!");if(valueisnull)Conso

c# - 请确认或更正我的这个 Haskell 代码片段的 "English interpretation"

我是一名C#开发人员,正在通过"RealWorldHaskell"工作为了真正理解函数式编程,所以当我学习F#时,我会真正理解它,而不仅仅是“在F#中编写C#代码”,可以这么说。好吧,今天我遇到了一个我以为我理解了3次不同的例子,然后才看到我错过的东西,更新我的解释,然后递归(还有诅咒,相信我)。现在我相信我确实理解了它,我在下面写了一个详细的“英文解释”。Haskell大师能否确认这种理解,或者指出我遗漏了什么?注意:Haskell代码片段(直接从书中引用)定义了一个自定义类型,该类型旨在与内置的Haskell列表类型同构。Haskell代码片段dataLista=Consa(Lis

C#:存储百分比,50 还是 0.50?

当在变量中保存百分比值时,在将它们保存为整数与分数之间存在偏好。也就是说,变量应该包含0到100之间还是0.00到1.00之间的数字?在任何一种情况下,保存值的变量都是十进制类型。我正在与之交互的数据库恰好将它们存储为0到100的整数。注意:我使用“整数”一词来表示0到100范围内的值,尽管这些值可能包含小数部分(例如25.75)。我不知道如何描述百分比值的两个范围之间的差异 最佳答案 我倾向于将它们存储为0到1,这样在计算中使用数字时就不需要转换。使用0到100之间的数字更像是一种查看数字的显示/可读性方式。当您显示百分比时,您可

c# - 为什么编译器决定 2.3 是 double 而不是十进制?

为什么编译器认为2.3是double的,所以这段代码无法编译:decimalx;x=2.3;//Compilationerror-cannotconvertdoubletodecimal.x=(decimal)2.3//O.k.为什么编译器不这样认为:他要取小数,他给我一个可以是小数的值,所以是小数!为什么这不会出现编译错误:shortx;x=23;//O.K.谁说23不是整数? 最佳答案 这里有很多问题。让我们把它们分解成小问题。Whyistheliteral2.3oftypedoubleratherthandecimal?历史原

c# - VS2010 'Show Derived Types' 类 View 中缺少选项

我正在VisualStudio2010中处理VisualC#项目,并在类View中浏览各种类型。根据this文档中,类View设置菜单中应该有一个类似于“显示基本类型”选项的“显示派生类型”选项。然而,它似乎不见了。我还没有设法找到任何错误报告或对这个问题的引用,所以我想知道我是否只是遗漏了一些东西。 最佳答案 我在VisualStudio2010中看到它,这是一个具有派生类型的C++项目。但是,在使用派生类型提到的C#项目中,未提供此选项。我正在检查一个没有派生类型的项目,看看这是否会导致该选项被禁用。编辑:似乎没有派生类型的项目