此问题与C#有关,但也可能适用于其他语言.我预计不会使用以下代码:
using System.Windows.Forms;
class MyForm : Form
{
private Timer myTimer;
private Button myButton;
public MyForm()
{
// Initialize the components, etc.
myTimer.Tick += new EventHandler( myTimer_Tick );
myButton.Click += new EventHandler( myButton_Click );
myTimer.Start();
}
private void myTimer_Tick( object sender, EventArgs eventArgs )
{
myTimer.Stop();
// also, I see a lot of usage of
// Timer.Enabled = true/false instead of -^
myButton_Click( this, ea /* or event EventArgs.Empty, or null */ );
return;
}
private void myButton_Click( object sender, …Run Code Online (Sandbox Code Playgroud) 我的脚本需要从JSON文件读取和写入.这没有问题.我在本地复制文件,编辑对象,然后将它们写回文件.但是,当我使用Ctrl + C关闭脚本并检查我的文件时,它[object, object]不是应该存在的实际对象.这不是每次都发生,但是很烦人,因为我的脚本依赖于这个文件.
有关如何防止这种错误关闭读者的任何想法?我在写作之前已经尝试检查类型,但它似乎没有多大帮助.
function writeConfig(obj) {
fs.writeFile('./config.json', obj, function (err) {
if (err) console.log(err);
});
}
Run Code Online (Sandbox Code Playgroud) 我有使用InlineData和MemberData属性在XUnit中编写的测试.我想通过我项目中其他地方的代码运行测试,并让属性自动填充测试数据,就像通常在VS测试运行器中运行时一样.
如果它不是属性,我会像任何其他常规方法一样直接调用方法.断言仍然被检查,它运行正常.但是,如果我直接调用具有属性的方法,则忽略属性,并且必须通过代码手动提供所有测试数据.在XUnit中是否有某种类型的测试运行器类可以重用来实现这一目标?我一直试图挖掘他们的API无济于事.
为什么我要这样做会得到一些解释,但请耐心等待.我正在针对特定接口而不是具体实现编写测试(例如,考虑标准集合接口).那里有足够的测试,我不想为每个具体的实施者复制粘贴它们(可能是几十个).我编写测试一次,然后将接口的每个具体实现作为测试的第一个参数传递,这是一个要测试的主题.
但这留下了一个问题.XUnit看到了测试并希望运行它,但它不能,因为在这一层没有具体的实现,只有接口.所以我想在更高层编写测试,只是新建具体实现,然后调用传递新主题的接口测试.我可以轻松地为只接受1个参数的测试做主题,但是对于我正在使用InlineData或MemberData的测试,我想重用已经提供的测试用例,并且只是将主题添加为第一个参数.
假设您正在使用三元运算符或空合并运算符或嵌套的if-else语句来选择对象的赋值.现在假设在条件语句中,您对昂贵或易失性操作进行了评估,要求将结果放入临时变量中,捕获其状态,以便可以对其进行比较,然后进行可能的分配.
一个语言(如C#)如何实现一个新的逻辑运算符来处理这种情况?应该是?在C#中是否存在处理此案例的现有方法?其他语言?
例如,当我们假设我们正在寻找直接比较时,已经克服了一些降低三元或零合并算子的冗长度的情况.请参阅使用Null Coalescing运算符的唯一方法,特别是关于如何扩展运算符的使用以支持的讨论String.IsNullOrEmpty(string).注意Jon Skeet如何使用PartialComparerfrom MiscUtil,将0s 重新格式化为nulls,
为什么这可能是必要的?那么,看看我们如何为没有任何快捷方式的复杂对象编写比较方法(引用的讨论中的示例):
public static int Compare( Person p1, Person p2 )
{
return ( (result = Compare( p1.Age, p2.Age )) != 0 ) ? result
: ( (result = Compare( p1.Name, p2.Name )) != 0 ) ? result
: Compare( p1.Salary, p2.Salary );
}
Run Code Online (Sandbox Code Playgroud)
Jon Skeet写了一个新的比较来回避平等案例.这允许通过编写一个返回null的新特定方法来扩展表达式,允许我们使用null合并运算符:
return PartialComparer.Compare(p1.Age, p2.Age)
?? PartialComparer.Compare(p1.Name, p2.Name)
?? PartialComparer.Compare(p1.Salary, p2.Salary)
?? 0;
Run Code Online (Sandbox Code Playgroud)
空合并运算符更具可读性,因为它有两个边,而不是三个边.布尔条件子句分为一个方法,在这种情况下返回null表达式必须继续.
如果我们可以更容易地将条件置于线上,那么上面的表达式会是什么样的?获取 …
SqlCommand objsql = new SqlCommand();
.
.
objsql.Parameters.AddWithValue("@Param1", DBNull.Value);
.
.
.
Run Code Online (Sandbox Code Playgroud)
我收到一个特殊的错误:
"你调用的对象是空的"
如果我做:
objsql.Parameters.AddWithValue("@PaymentMethodID", null);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:参数化查询'(@SupplierQuoteID int,@ PaymentMethodID nvarchar(4000),@ DueDate d'需要参数'@PaymentMethodID',这是未提供的."}
PaymentMethodID是表中的一列,取空值.
此错误发生在这里:
string valHolder = null;
valHolder = objSqlCommand.ExecuteScalar().ToString();
singleValue = Convert.ToInt32(valHolder);
Run Code Online (Sandbox Code Playgroud)
一旦objSqlCommand.ExecuteScalar().ToString(); 执行时,抛出错误.记录被插入到表中但是ExecuteScalar()不返回任何值!它应该返回当前最新的自动递增的pk,但它不会.
注意:执行此行时,将抛出上面提到的所有错误
valHolder = objSqlCommand.ExecuteScalar().ToString();
Run Code Online (Sandbox Code Playgroud)
这是完整的错误:
System.NullReferenceException was caught
Message="Object reference not set to an instance of an object."
Source="........"
StackTrace:
at ......DAL.ExecuteSQL(SqlCommand sqlCmd, String typeOfExecution) in C:\Users\....\Desktop\........\DAL.cs:line 136
InnerException:
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
好的,我从官方网站下载了HDF5库,我有一些DLL,包括hdf5dll.dll和hdf5_hldll.dll.
我有我的想法是围绕本地调用一些包装,在我的课H5,H5LT,H5F,和H5T.来自H5.cs的示例:
namespace HDF5
{
using hid_t = System.Int32;
using herr_t = System.Int32;
using hsize_t = System.UInt64;
using size_t = System.UInt32;
// hbool_t is 0:false, +:true
using hbool_t = System.UInt32;
// htri_t is 0:false, +:true, -:failure
using htri_t = System.Int32;
public class H5
{
const CharSet StringMarshallingType = CharSet.Ansi;
const string DLLNAME = "hdf5dll.dll";
Run Code Online (Sandbox Code Playgroud)
///* Functions in H5.c */
//H5_DLL herr_t H5open(void);
[DllImport(DLLNAME,
CharSet = StringMarshallingType)]
public static extern herr_t H5open();
Run Code Online (Sandbox Code Playgroud)
在Program.cs中,我使用 …
我正在尝试解码来自DB的字符串,如下所示:
所有Ablaze 攀登玫瑰.
使用WebUtility或HttpUtility HtmlDecode方法转为"" 变成空白而不是"TM"符号.
是否有另一种方法可以为这种类型的字符串生成正确的输出?我的代码:
System.Net.WebUtility.HtmlDecode(" All Ablaze ™ Climbing Rose.")
期望的输出:
所有Ablaze™登山玫瑰.
c# ×6
.net ×2
ado.net ×1
asp.net-mvc ×1
coding-style ×1
filewriter ×1
formatting ×1
fs ×1
hdf5 ×1
node.js ×1
object ×1
pinvoke ×1
xunit ×1
xunit.net ×1