相关疑难解决方法(0)

C#中字符串和字符串有什么区别?

示例(注意案例):

string s = "Hello world!";
String s = "Hello world!";
Run Code Online (Sandbox Code Playgroud)

每种使用的准则是什么?有什么区别

.net c# string alias types

6250
推荐指数
62
解决办法
103万
查看次数

默认字符串初始化:NULL还是Empty?

我总是将我的字符串初始化为NULL,认为NULL表示没有值,""或String.Empty是一个有效值.我最近看到了更多代码示例,其中String.Empty被视为默认值或不表示任何值.这让我感到很奇怪,在c#中新添加的可空类型似乎我们通过不使用NULL来表示"无值"来向后调整字符串.

您使用什么作为默认初始化程序?为什么?

编辑:根据答案,我进一步思考

  1. 避免错误处理如果值不应为null,为什么它NULL首先设置为?也许最好在发生错误的位置识别错误,而不是在代码库的其余部分覆盖错误?

  2. 避免空检查如果您厌倦了在代码中进行空检查,那么抽象空检查是不是更好?也许包装(或扩展!)字符串方法以使它们NULL安全吗?如果你经常使用String.Empty并且null正好进入你的系统会发生什么,你是否开始添加NULL检查?

我忍不住回到懒惰的意见.如果你使用''而不是null在他的数据库中使用',那么任何DBA都会狠狠地打你九种方式.我认为同样的原则适用于编程,并且应该有人打击那些使用String.Empty而不是NULL代表没有价值的人.

相关问题

c#

127
推荐指数
6
解决办法
14万
查看次数

Ajax 传递空值但控制器在 ASP.NET MVC 中为空

我正在处理ASP.NET MVC发送Ajax到我的控制器的值,但遇到了问题。

假设我有SampleViewModel这样的:

public class SampleViewModel
{
    private string _firstName = string.Empty;

    public SampleViewModel()
    {
        _firstName = string.Empty;
    }

    public string FirstName
    {
        get { return _firstName; }
        set { _firstName = value ?? string.Empty; }
    }

    public string LastName { get; set; }

    public string FullName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器

[HttpPost]
public JsonResult ActionSubmit(SampleViewModel model)
{               
    var result = "";

    if(model.FirstName == null)
          result += "\nFirstName is null";

    if(model.LastName == null) …
Run Code Online (Sandbox Code Playgroud)

c# ajax asp.net-mvc jquery

14
推荐指数
3
解决办法
1万
查看次数

处理用户输入时为NULL与Empty

是的,另一个NULL vs空字符串问题.

我同意NULL意味着没有设置的想法,而空字符串意味着"一个空的值".这是我的问题:如果列的默认值为NULL,我如何允许用户输入该NULL.

假设在系统上创建了一个新用户.有一个名字和姓氏字段; 姓氏不需要姓氏.创建用户时,此人将看到2个文本输入,一个用于第一个,一个用于最后一个.该人选择仅输入姓氏.第一个名称在技术上没有设置.在插入期间,我检查每个字段的长度,将所有空字段设置为NULL.

查看数据库时,我看到未设置名字.立即想到的问题是,他们可能从未见过名字字段(即因为错误).但这种情况并非如此; 如果空白,他们就离开

所以,我的问题是,如何在接收用户输入时决定何时将字段设置为NULL或空字符串?你怎么知道用户想要在没有检测焦点的情况下设置字段,或者他们是否删除了值...或......或......?

相关问题:我应该使用NULL还是空字符串来表示表列中没有数据?

database null

6
推荐指数
4
解决办法
2万
查看次数

为什么字符串可以为空?

可能重复:
类型'string'必须是非可空类型才能在泛型类型或方法'System.Nullable <T>'中将其用作参数T.

正如标题所说,为什么字符串默认在C#中可以为空,但如果我想要,比如说,int或double是null,我必须明确说出来吗?

.net c#

6
推荐指数
1
解决办法
8328
查看次数

如何在类中初始化不可为空的字符串?

我有这个项目:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.1" />
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

这是主要的类:

namespace CSharp8
{
    using System;
    using Microsoft.Extensions.Configuration;

    internal class Program
    {
        private static void Main()
        {
            var configuration = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json", false, true)
                .Build();
            var appSettings = configuration.Get<AppSettings>();
        }

        public class AppSettings
        {
            public string SourceServer { get; set; }
            public string TargetServer { get; set; }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是appsettings.json:

{
  "SourceServer": "prodtools",
  "TargetServer": "qatools"
}
Run Code Online (Sandbox Code Playgroud)

在 AppSettings 的属性上,我收到此警告:

警告 CS8618 不可为 …

c# string initialization non-nullable

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

String null vs""

好的,所以我将某人的代码从VB.Net转换为C#.我想知道字符串是否设置为"",是否与设置为null相同?例如,以下代码:

string word = "";
bool boolValue = false;

if(string == null)
{
  boolValue = true;
}
Run Code Online (Sandbox Code Playgroud)

那么这最终会将boolValue设置为true,还是将单词设置为""或将两个不同的东西置空?我的直觉告诉我,这是不同的.那个""只是使它成为一个空字符串.

c# vb.net null

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

标签 统计

c# ×6

.net ×2

null ×2

string ×2

ajax ×1

alias ×1

asp.net-mvc ×1

database ×1

initialization ×1

jquery ×1

non-nullable ×1

types ×1

vb.net ×1