为什么这样做:
ComboBox cb = sender as ComboBox;
int validSelection = Convert.ToInt32(cb.Tag);
if (cb.SelectedIndex != validSelection) {
cb.SelectedIndex = validSelection;
}
Run Code Online (Sandbox Code Playgroud)
...但是这个:
ComboBox cb = sender as ComboBox;
int validSelection = (int)cb.Tag; // <-- fails
if (cb.SelectedIndex != validSelection) {
cb.SelectedIndex = validSelection;
}
Run Code Online (Sandbox Code Playgroud)
...错误输出"对象未设置为对象的引用"?
我希望能够快速参考各种DateTime格式的显示方式,而不是开始编辑,编译,gawk和recurse的繁重过程,直到满意为止.
使用此代码:
public static bool PlatypusIsAFornightOrLessOld(int PlatypusID) {
const int FORTNIGHT = 14;
const string sql = @"SELECT PLATYPUSBIRTHDATE
FROM PLATYPI
WHERE PLATYPUSID = :PLATYPUSID";
DateTime dt;
try {
using (var ocmd = new OracleCommand(sql, oc)) {
ocmd.Parameters.Add("PLATYPUSID", PlatypusID);
dt = Convert.ToDateTime(ocmd.ExecuteScalar());
}
return (DateTime.Today - dt) <= FORTNIGHT;
} catch (Exception e) {
. . .
Run Code Online (Sandbox Code Playgroud)
我得到:"运算符'<='不能应用于"返回"行上'System.TimeSpan'和'int'类型的操作数.
using Microsoft.Office.Interop.Excel;
Range rng = worksheet.UsedRange;
Run Code Online (Sandbox Code Playgroud)
//我发现下面的代码,但我没有找到引用ExcelAlignemt和excel我错过了一些需要这样的ref
rng.VerticalAlignment = ExcelAlignment.xlButtom; //or Excel.XlHAlign.xlHAlignLeft
Run Code Online (Sandbox Code Playgroud) 我有代码将单元格的默认值设置为上面的单元格的值乘以100:
const int DUCKBILL_MULTIPLIER = 100;
. . .
cellValue = dataGridViewPlatypi.Rows[args.RowIndex - 1].Cells[0].Value;
if (Convert.ToInt32(cellValue) > 0)
{
int nextDefaultVal = Convert.ToInt32(cellValue) * DUCKBILL_MULTIPLIER;
cellValue = nextDefaultVal;
}
prevVal = cellValue == null ? string.Empty : cellValue.ToString();
. . .
dataGridViewPlatypi.Rows[args.RowIndex].Cells[args.ColumnIndex].Value = prevVal;
Run Code Online (Sandbox Code Playgroud)
但是,一旦上述值达到10亿(10亿),下一个值就是1215752192(1,215,752,192或大约12亿),而不是1000亿.
据我所知,max int值是2,147,483,647(约21亿); 那么为什么下一个值为1,215,752,192而不是2,147,483,647?
顺便说一下,这些val比应用程序需要的要大,但我在测试"极端"情况时发现了这个.
几天前,我安装了Visual Studio Express for C#; 昨天我安装了Visual Studio Ultimate.由于我将不再使用前者,卸载它是否安全?
我正在调整我在这里找到的一些代码:http://nicholas.piasecki.name/blog/2009/03/sending-raw-epl2-directly-to-a-zebra-lp2844-via-c/#comment-1636,但在VS 2003/.NET 1.1中,StringBuilder的AppendLine方法无法识别,因此我将其截断为.Append.
现在我需要在每次调用Append之后添加#13#10左右 - 我假设这是AppendLine自动执行的操作.
在仔细阅读遗留源代码时,我发现了这一点:
DataSet myUPC = new DataSet();
myUPC = dbconn.getDataSet(dynSQL);
Run Code Online (Sandbox Code Playgroud)
Resharper正确地"灰化"其中的"新数据集()"部分,并建议"删除冗余的初始化器",但它是否像那样无害?编译器是否只是在第二次赋值之前处理第一个实例?IOW,第一个任务是不必要的,还是有潜在危害?
在查看一些遗留代码时,我遇到了这个枚举:
public enum cmdResults
{
cmdNotFound = 0,
cmdFound = 1,
cmdExit = 2,
cmdSuccess = 3,
cmdFail = 4,
cmdTimeout = 5,
cmdProcess = 6,
cmdAddTime = 7,
};
Run Code Online (Sandbox Code Playgroud)
在注意到最终枚举成员之后的逗号时,我惊呆了; 我删除了它,并且正如预期的那样,它仍然被编译.但为什么它与最终的逗号一起使用?
(并没有提到成员的奇怪排序;我会在索引0处放置一个新的"cmdNothing",或者至少让"cmdFail"占据该位置)
在我必须维护的代码中(ELP的"Lucky Man"绝对不适合这个音轨),我看到这个,变灰了(没有注释掉 - 由编译器或Resharper灰显):
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
Run Code Online (Sandbox Code Playgroud)
一个橙色灯泡字形(Resharper?)msg说,"删除冗余方法覆盖"
里面有一个"0"的天蓝色圆形字形说:
"覆盖类'System.ComponentModel.Component'中的方法" - 和: "覆盖类'System.Windows.Forms.Control中的方法"
我接受它所说的是,这个覆盖除了它覆盖的方法之外没有任何作用,因此我可以完全删除它.我对吗?
c# ×9
datetime ×2
resharper ×2
winforms ×2
.net ×1
append ×1
casting ×1
date ×1
dispose ×1
enums ×1
excel ×1
formatting ×1
installation ×1
int ×1
math ×1
overriding ×1
refactoring ×1
uninstall ×1