草庐IT

very_long_string

全部标签

c# - MVC 3 不绑定(bind) nullable long

我创建了一个测试网站来调试我遇到的问题,看来我传递的JSON数据有误,或者MVC无法绑定(bind)可为null的long。当然,我使用的是最新的MVC3版本。publicclassGetDataModel{publicstringTestString{get;set;}publiclong?TestLong{get;set;}publicint?TestInt{get;set;}}[HttpPost]publicActionResultGetData(GetDataModelmodel){//Dostuff}我正在发布一个具有正确JSON内容类型的JSON字符串:{"TestStri

c# - .NET2 DNS 拒绝超过 126 个字符的主机名,如 "too long"

在编写程序时,我最近发现.net中的主机名(或至少在ping类中)不应超过126个字符。如果主机名较长,则ping类会抛出异常。但是维基百科指出最多允许使用255个字符。看起来确实有主机名超过126个字符的机器,所以问题是:这个限制可以改变吗?谁是对的?如果不能,如何解析名称? 最佳答案 .NETDns类的主机名硬性上限为126个字符(已针对.NET4检查)。但是,您可以使用较低级别的Win32DnsQuery方法使用P/Invoke将主机名转换为IP地址,然后将这些原始地址用于.NET网络类。这是一个使用这种方法的示例DnsAdd

C# 验证 : IDataErrorInfo without hard-coded strings of property name?

实现IDataErrorInfo的最佳做法是什么?无论如何都可以在没有属性名称硬编码字符串的情况下实现它? 最佳答案 通用验证例程的基类您可以使用DataAnnotations如果您在IDataErrorInfo实现中做了一些futzing。例如,这是我经常使用的基本View模型(来自Windows窗体,但您可以推断):publicclassViewModelBase:IDataErrorInfo,INotifyPropertyChanged{publiceventPropertyChangedEventHandlerPropert

c# - "The binary operator Add is not defined for the types ' System.String ' and ' System.String '."-- 真的吗?

尝试运行以下代码时:Expression>stringExpression=Expression.Lambda>(Expression.Add(stringParam,Expression.Constant("A")),newList(){stringParam});stringAB=stringExpression.Compile()("B");我收到标题中提到的错误:“二元运算符Add没有为类型‘System.String’和‘System.String’定义。”真的是这样吗?显然在C#中它有效。在C#中执行strings="A"+"B"是表达式编译器无法访问的特殊语法糖吗?

c# - string.IsNullOrEmpty(myString) 或 string.IsNullOrWhiteSpace(myString) 是否违反 SRP 规则?

如问题所示,正如函数名称所示,我们正在使用像IsNullOrEmpty或IsNullOrWhiteSpace这样的字符串函数,它们做的不止一项工作,这是否违反了SRP?它不应该是string.isValid(EnumtypeofValidation)而不是使用策略模式来选择正确的策略来验证。或者在实用程序类或静态类中违反SRP是否完全可以。 最佳答案 SRP说一个函数或类应该只有一个改变的理由。改变的理由是什么?更改的原因是请求更改的用户。因此,一个类或函数应该只有一个请求更改的用户。现在,一个先进行一些计算然后进行一些格式化的函数

c# - 为什么 long 和 decimal 之间的 Equals 不可交换?

我在linqpad中运行了这段代码:longx=long.MaxValue;decimaly=x;x.Dump();y.Dump();(x==y).Dump();(y==x).Dump();Object.Equals(x,y).Dump();Object.Equals(y,x).Dump();x.Equals(y).Dump();y.Equals(x).Dump();它产生这个输出:92233720368547758079223372036854775807TrueTrueFalseFalseFalseTrue请注意最后两行:x.Equals(y)为假,但y.Equals(x)为真。因

c# - System.String 的内部结构

我用反射查看了System.String的内部字段,发现了三个字段:m_arrayLengthm_stringLengthm_firstChar我不明白这是怎么回事。m_arrayLength是一些数组的长度。这个数组在哪里?它显然不是字符串类的成员字段。m_stringLength是有道理的。它是字符串的长度。m_firstChar是字符串中的第一个字符。所以我的问题是字符串的其余字符在哪里?如果不在字符串类中,字符串的内容存储在哪里? 最佳答案 第一个字符提供对缓冲区中第一个字符的内存地址的访问(通过&m_firstChar)。

c# - Assert.AreEqual 对 int 和 ulong 失败但对 long 和 uint 失败

好吧,我希望我的处理器没有烧毁,因为:[TestMethod]publicvoidtenEqualten(){Int64a=10;UInt32b=10;Assert.AreEqual(a,b);}工作得很好,但是这个:[TestMethod]publicvoidtenNotEqualten(){Int32a=10;UInt64b=10;Assert.AreEqual(a,b);}惨败。你有没有得到相同的结果,还是只有我?如果是,有什么想法,为什么?如果这是.Net4.5的已知问题,那么抱歉垃圾邮件,但我找不到它作为错误。编辑:我找到了重复的here和解释here

c# - Visual Studio 2008 : Step to next line is very slow when debugging managed code

当通过F10逐行单步执行我的C#代码时,调试器需要一秒钟多的时间才能到达下一行。我试过删除所有监视和断点,但这没有任何区别。这正常吗?很长一段时间以来都是这样,所以我什至不记得这是不是更好了。我的开发计算机是一台四核机器,没有后台任务事件并且有足够的RAM。如果不正常,我还能尝试什么?它仍然可以使用,但是一个不那么迟钝的用户界面会很棒...... 最佳答案 可能发生的情况是,您在调用堆栈框架中有一个变量,该变量具有昂贵的.ToString方法。在2008年,无论窗口是否实际可见,调用堆栈窗口的数据都会在每一步重建。构建此窗口的一部分

c# - 如何序列化具有 Dictionary<string,object> 属性的对象?

在下面的示例代码中,我得到了这个错误:ElementTestSerializeDictionary123.Customer.CustomPropertiesvomTypSystem.Collections.Generic.Dictionary`2[[System.String,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Object,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934