我正在研究一种方法,它接受StreamWriter,字符串或可空值,以及长度,并将值写入StreamWriter,填充到长度.如果值为null,我想写空格.我想做一些类似下面的简化示例,仅用于演示目的.
public void FixedWrite(StreamWriter writer, string value,
int length) {
if (value == null) value = "";
value = value.PadRight(length);
writer.Write(value);
}
public void FixedWrite<T>(StreamWriter writer, T value,
int length) where T : Nullable /* won't work of course */ {
string strVal;
if (!value.HasValue) strVal = null;
else strVal = value.Value.ToString();
FixedWrite(writer, strVal, length);
}
Run Code Online (Sandbox Code Playgroud)
我可以为所有不同的底层类型(它们都是日期,整数,粗体和小数)进行重载,但我想知道我是否可以使通用版本正常工作.有没有办法让T永远是一个Nullable <>类型,并访问Nullable <>属性(HasValue和Value)?或者我应该坚持基础类型特定的重载?
这个问题提出了类似的问题,但在我的情况下,值已经是nullables,我只想写出值,如果它有一个,如果没有,则写出空格.
我在Django中插入NULL时遇到问题.我的意思是我不知道该怎么做.
我有函数,让我们调用它find_position,然后我在模型中有字段position(IntegerField,null = True,blank = True).这个函数检查一些html代码,如果它与一些正则表达式匹配,它返回整数,但如果它没有找到 - 必须返回NULL或None或我可以放在数据库中的东西.
def find_position(self, to_find, something):
...
if re.search(to_find, something):
return i + (page * 10) + 1
return NULL # or what i have to return here?
Run Code Online (Sandbox Code Playgroud)
我有这个:
_position = find_position(to_find, something)
p = Result(position=_position, ...)
r.save()
Run Code Online (Sandbox Code Playgroud)
以前我用CharField for position,如果找不到结果,则返回' - '.但我在计算总结果时遇到了问题,比如position__lte = 10(因为它不是,integer而且它与数字和字符串搞混了-.
我该怎么办?
我想定义一个通用接口,它允许可以为空的值类型(int?,double?等)和类类型(也可以为null).我不想允许简单的值类型.有没有办法做到这一点?
你怎么能访问null nullable的propery HasValue?
我查看了编译的代码,它不是语法糖.
为什么这不会抛出NullReferenceException:
int? x = null;
if (x.HasValue)
{...}
Run Code Online (Sandbox Code Playgroud) 如何检查Linq中的Null?
我有一个第三方代码,它返回一个可以为空DataTable的列类型DateTime.
我的代码:
var profile = (from d in ds.Tables[0].AsEnumerable()
select new User
{
FirstName = d["FirstName"].ToString(),
Birthdate = Convert.ToDateTime(d["BirthDate"].ToString())
}).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
返回一个错误是,Object cannot be cast from DBNull to other types在Birthdate=声明.
我尝试使用以下代码但返回一个强制转换异常(无法从字符串强制转换为DateTime?)
Birthdate = (DateTime?)d["BirthDate"].ToString();
Run Code Online (Sandbox Code Playgroud)
有没有办法快速检查空值?
是否有更简洁的方法来编写此代码.我感觉可能有,但我不知道如何.
if (loadedFormData.Education.AwardedADegree==true)
{
this.radiobuttonNoAwarded.Checked = false;
this.radiobuttonYesAwarded.Checked = true;
}
if (loadedFormData.Education.AwardedADegree == false)
{
this.radiobuttonNoAwarded.Checked = true;
this.radiobuttonYesAwarded.Checked = false;
}
else // AwardedADegree is null
{
this.radiobuttonNoAwarded.Checked = false;
this.radiobuttonYesAwarded.Checked = false;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用C#进行格式化.现在我想为PointF返回一个null
/// <summary>
/// Project the point according to camera position.
/// </summary>
/// <param name="p">Point position, in WC</param>
/// <returns>pixel position</returns>
public PointF Project(MCvPoint3D32f p)
{
//return new PointF(p.x, p.y);
// Extend p
Matrix<double> p_ex = new Matrix<double>(3, 1);
p_ex[0, 0] = p.x;
p_ex[1, 0] = p.y;
p_ex[2, 0] = p.z;
var rst = HomographMatrix * p_ex;
rst[0, 0] = rst[0,0] / rst[2, 0] * focalLength * scale;
rst[1, 0] = rst[1, 0] / rst[2, 0] * focalLength * …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个变量Guid?表示可以为空的db列.我在分配价值时遇到问题.我能够轻松地为变量赋值null.但是当我想分配一个Guid值时,我必须创建一个新的Guid?不接受字符串的对象.
Guid? sample=new Guid?(someString); // erroing "Cannot implicitly convert string to Guid"
Run Code Online (Sandbox Code Playgroud)
所以我必须这样做
Guid? sample=new Guid?(new Guid(someString)); // working code
Run Code Online (Sandbox Code Playgroud)
我还有条件地分配值.
Guid? sample=(string.IsNullOrWhiteSpace(someString))?null: new Guid?(new Guid(someString));
Run Code Online (Sandbox Code Playgroud)
为什么Guid会出现这个问题?
请考虑以下代码:
function Test
{
[CmdletBinding()]
param
(
[parameter(Mandatory=$true)]
[AllowNull()]
[String]
$ComputerName
)
process{}
}
Test -ComputerName $null
Run Code Online (Sandbox Code Playgroud)
基于官方文档AllowNull我期待的$ComputerName可能是[string]或$null.但是,运行上面的代码会导致以下错误:
[14,24:Test]无法将参数绑定到参数'ComputerName',因为它是一个空字符串.
为什么$ComputerName在这种情况下不传递$ null用于工作?
我有两个可以为空的枚举,我想比较两个常规枚举的值.如果可以为空的枚举没有值,我希望比较评估为true.这是我的逻辑到目前为止的样子:
if (!nullableEnumOne.HasValue || nullableEnumOne.Value == regularEnumOne)
&& (!nullableEnumTwo.HasValue || nullableEnumTwo.Value == regularEnumTwo)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
有没有办法简化我错过的逻辑?
nullable ×10
c# ×6
.net ×3
generics ×2
asp.net ×1
asp.net-mvc ×1
database ×1
django ×1
integer ×1
linq ×1
null ×1
parameters ×1
powershell ×1