草庐IT

常量池

全部标签

c# - 为什么字符串常量上的 switch-case 语句在 Visual Studio 2019(16.0.3 之前)中需要默认值,但在 Visual Studio 2017 中不需要?

我正在VisualStudio2017编写的代码库上试用VisualStudio2019,我立即发现了一个构建问题。我有一个switchcase语句,其中根据常量字符串选择大小写。这没有默认情况,这在VisualStudio2017中很好,但在VisualStudio2019中会引发构建错误。我可以通过添加一个默认案例来解决这个问题,但我想避免代码更改,如果可能的话只更改编译器设置,以避免需要拉取请求。无论如何,最好了解问题的原因。publicclassProgram{publicconststringDatabase="MongoDB";publicstaticstringGetDb

c# - 如何在 silverlight 中的 xaml 和 c# 之间共享数字常量

我是.NET编程的新手,正在尝试学习Silverlight2/C#。我需要声明数字常量(或者更好的是,只读变量),并在XAML和我的C#代码隐藏文件中访问它们。这些值在XAML中定义更合适,但如果需要在C#中完成定义,这比在多个地方对值进行硬编码要好。我找到了WPFXAML的解决方案,但Silverlight显然不支持语法(我找到的解决方案要求定义在C#文件中)。TIA!回复迈克尔我将此回复添加为对我的原始问题的评论,因为评论编辑器不允许我添加这么多文本,而且我找不到其他方式来回复您的回答。谢谢你的回答,迈克尔,但我似乎无法让它工作。我从“ProSilverlight2inc#2008

c# - 从结构的常量属性中获取值的集合

我有一个看起来像这样的结构:publicstructMyStruct{publicconststringProperty1="blahblahblah";publicconststringProperty2="foo";publicconststringProperty3="bar";}我想以编程方式检索MyStruct的常量属性值的集合。到目前为止,我已经尝试过但没有成功:varx=fromdintypeof(MyStruct).GetProperties()selectd.GetConstantValue();有人有什么想法吗?谢谢。编辑:这是最终对我有用的:fromdintype

c# - 为什么 C# 4.0 中的可选参数需要编译时常量?

还有一种方法可以使用可选方法参数的运行时值吗? 最佳答案 可选参数必须是常量,因为它们是作为属性值写出的。因此,它们继承了属性值所具有的所有限制。无法直接对运行时值进行编码。但是,您可以通过以下模式接近publicvoidMyApi(SomeTypetype=null){type=type??newSomeType();...} 关于c#-为什么C#4.0中的可选参数需要编译时常量?,我们在StackOverflow上找到一个类似的问题: https://st

c# - 将 XAML 中的标签文本设置为字符串常量

我有一个字符串常量,我必须在几个不同的XAML布局中重复使用它,所以我不想复制它,而是想将它绑定(bind)到一个常量。我有一个在C#中定义字符串的类:publicstaticclassStringConstants{publicstaticstringMyString{get{return"SomeConstant";}}}我希望能够通过类似以下内容的XAML设置值:这可以实现吗?我已经搜索了示例,但我只找到了涉及代码隐藏中一些修补的示例,我想知道是否有更简单的、仅XAML的解决方案,如果我知道我只需要设置一次值在一个永远不会改变的字符串值上。 最佳答案

c# - .Net 中嵌入两次的字符串常量?

假设我有一个简单的(最简单的?)C#程序:classProgram{staticvoidMain(){System.Console.WriteLine("Hello,world");}}如果我编译该代码并查看生成的.exe,我会按预期在exe镜像中看到“Hello,world”字符串。如果我将代码重构为:classProgram{conststringGreeting="Hello,world";staticvoidMain(){System.Console.WriteLine(Greeting);}}如果我编译该代码并查看生成的.exe,我会在exe镜像中看到两次“Hello,wor

c# - 使用常量进行算术运算时出现溢出错误

我尝试了以下代码:intx,y;x=y=int.MaxValue;intresult=x+y;此代码工作正常,结果将包含-2(我知道为什么)。但是这样做的时候:constintx=int.MaxValue;constinty=int.MaxValue;intresult=x+y;由于溢出问题,这将无法编译。为什么? 最佳答案 因为x和y都是编译时常量,所以x+y也是。编译器知道结果会溢出,所以它会提示。您可以使用unchecked表达式来解决这个问题:intresult=unchecked(x+y);来自C#5规范的第7.6.12节

c# - 编译时常量差异

更新:这似乎是一个编译器转移注意力的问题,因为以下内容实际上是有效的:constintMyInt=default(int);问题在于DateTime不是有效的const,而不是default的使用。让我感到困惑的主要原因是没有意识到default(DateTime)是在可选参数中专门处理的(而且我得出了一个错误的结论,即default(DateTime)由于错误消息忽略了其他可能的条件而被视为编译时常量)。MarcinJuraszek在他的回答中解决了这个问题。原始问题:这是无耻地从MarcGravell来自thisanswer的评论中撕下的另一个问题。为什么以下内容有效://Noco

c# - 如何在 ASP.Net 页面使用 C# 常量?

下面给出的例子可能没什么意义,但这是因为我专注于语法。假设我有这样的C#代码:publicstaticclassFoo{publicconststringBar="helloworld.";}现在,我想在ASP.Net中使用Foo.Bar常量,而不是每次都输入“helloworld.”。所以我使用了这个语法:它有效。它也适用于这种情况:""">theweird,nonsenseexample因此,它也适用于引号。但是我也有一些情况,当引号获得更高的优先级时:"/>(header是一个自定义控件——它只是默认添加一些css和位置)。在这种情况下,引号具有更高的优先级,并且整个文本都按原样

c# - 在 C# 中命名 Windows API 常量

namingconventionforconstantsinC#是Pascal大小写:privateconstintTheAnswer=42;但有时我们需要表示WindowsAPI中已经存在的常量。例如,我不知道如何命名://////Withthisstyleturnedonforyourform,///Windowsdouble-bufferstheformandallitschildcontrols.///publicconstintWS_EX_COMPOSITED=0x02000000;我应该给它起什么名字?将它保持为WS_EX_COMPOSITED可以让我快速将它与theWin