在玩弄新概念时,我偶然发现了Ternary Operator它的美丽.在玩了一段时间之后,我决定测试它的极限.
然而,当我无法编译某段代码时,我的乐趣很快就结束了.
int a = 5;
int b = 10;
a == b ? doThis() : doThat()
private void doThis()
{
MessageBox.Show("Did this");
}
private void doThat()
{
MessageBox.Show("Did that");
}
Run Code Online (Sandbox Code Playgroud)
这行给了我两个错误:
Error 1 Only assignment, call, increment, decrement, and new object expressions can be used as a statement
Error 2 Type of conditional expression cannot be determined because there is no implicit conversion between 'void' and 'void'
Run Code Online (Sandbox Code Playgroud)
我从来没有使用Ternary Operator过来决定调用哪种方法,也不知道它是否可行.我只是喜欢一行If Else Statement方法调用的想法.
我做了一些研究,我找不到任何人这样做的例子,所以我想我可能希望有一些无法提供的东西. …
在调试我的代码时,我经常抛出断点来检查局部变量的值,以确保一切都在正确的轨道上.
最近,当我对我的代码进行更改并重新编译时,我的所有断点都变成了圆圈的轮廓(而不是一个完整的红色圆圈)并且它给出了一个读取的错误;
断点当前不会被击中.此行没有可执行代码.可能的原因包括:条件编译或编译器优化.
这个问题的奇怪之处在于我可以简单地删除并添加断点,一切都可以正常工作.
我没有使用任何类型的条件编译或编译器优化.有谁知道这意味着什么或如何解决这个问题?每次编译时替换10-12个断点都会非常烦人.
我最近停止使用using语句,而是使用我调用的任何.net对象的完整命名空间路径.
例:
using System;
namespace QuizViewer
{
class Class1
{
Console.WriteLine("Hello World!");
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我现在所做的.
namespace QuizViewer
{
class Class1
{
System.Console.WriteLine("Hello World!");
}
}
Run Code Online (Sandbox Code Playgroud)
在你问为什么我这样做之前,我正在使用这种风格,以便我可以准确地看到我的对象来自哪里,并且在使用不同的Timer对象和具有相似名称的其他对象时更容易.
这种编程风格是否有任何性能提升或降低?
我一直在广泛研究这个问题,似乎无法找到答案.
我知道Only part of a ReadProcessMemory or WriteProcessMemory request was completed当32位进程尝试访问64位进程时会抛出异常,而对于64位进程修改32位进程则会抛出异常.
该问题的解决方案是将平台目标更改为"任何CPU".我试过这个,不幸的是这并没有解决我的问题.
下一个代码块是不断抛出异常的原因.运行此代码的程序用于在远程计算机上打开应用程序,并保留程序本身打开的所有进程的列表,这样我就不必遍历所有进程.
Process processToRemove = null;
lock (_runningProcesses)
{
foreach (Process p in _runningProcesses)
{
foreach (ProcessModule module in p.Modules)
{
string[] strs = text.Split('\\');
if (module.ModuleName.Equals(strs[strs.Length - 1]))
{
processToRemove = p;
break;
}
}
if (processToRemove != null)
{
break;
}
}
if (processToRemove != null)
{
processToRemove.Kill();
_runningProcesses.Remove(processToRemove);
}
}
Run Code Online (Sandbox Code Playgroud)
这些过程可以并且很可能是32位和64位混合在一起.
我有什么我不应该做的事情,或者是否有更好的方法来做所有这些?
要在Powerpoint中使用SlideShowBegin事件,您必须按以下方式配置类模块:
Public WithEvents App As Application
Private Sub App_SlideShowBegin(ByVal Wn As SlideShowWindow)
MsgBox "SlideShowBegin"
End Sub
Run Code Online (Sandbox Code Playgroud)
然后,在非类模块内部,您必须创建该类型的对象并将App设置为Application.
Dim X As New Class1
Sub InitializeApp()
Set X.App = Application
End Sub
Run Code Online (Sandbox Code Playgroud)
现在,我唯一的问题是,如果您没有使用Powerpoint中的宏菜单手动调用InitializeApp,则事件不起作用.你必须先调用这个子,然后才能在幻灯片的开头调用包含这个子的东西.
在运行我的powerpoint之前,如何调用此sub?有一个更好的方法吗?
编辑:
我已经尝试过使用Class_Initialize,但只有在第一次使用它时才会被调用,或者你会发出类似的语句 Dim X as Class1; X = new Class1
我在 XmlSerializer 中遇到了一些有趣的行为。
如果我尝试序列化一个具有Typeobject属性并且该对象实现的类IXmlSerializable,序列化程序将抛出一个InvalidOperationException带有InnerException:
在此上下文中不能使用类型 ConsoleApplication1.MyClass。要将 ConsoleApplication1.MyClass 用作参数、返回类型或类或结构的成员,必须将参数、返回类型或成员声明为类型 ConsoleApplication1.MyClass(不能是对象)。ConsoleApplication1.MyClass 类型的对象不能用于无类型集合,例如 ArrayLists。
但是,如果对象没有实现IXmlSerializable,序列化程序将执行得很好。
这是 XmlSerializer 处理 IXmlSerializable 对象的方式中的错误吗?
下面是一个非常基本的情况,会导致抛出此异常。
public class SerializableClass
{
public object Configuration { get; set; }
}
public class MyClass : IXmlSerializable
{
public string MyProperty { get; set; }
public MyClass()
{
MyProperty = string.Empty;
}
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
public void ReadXml(System.Xml.XmlReader reader) { /*Read*/ }
public void WriteXml(System.Xml.XmlWriter writer) { /*Write*/ …Run Code Online (Sandbox Code Playgroud) 嘿伙计们,我用a Panel来保存控件列表(用户自定义).我添加面板的方式,我将基于Panel.Controls.Count之前添加到面板之前设置控件的位置.
comRec.Location = new Point(comRec.Location.X, panel1.Controls.Count * 25);
panel1.Controls.Add(comRec);
Run Code Online (Sandbox Code Playgroud)
现在,这很好用,看起来就像我想要的那样.但是,一旦我们达到窗口的限制,AutoScroll启用(我想要的).现在,如果用户要滚动到底部Panel,这最终会更改面板中每个控件的位置.而不是我的第一个comRec.Location(0,0),它类似于(0,-219).所以现在,当用户添加另一个comRec对象时,它会在对象之间创建巨大的间隙.
我的问题是,使用滚动条考虑位置变化并使用我的添加系统的最佳方法是什么.我假设必须做一些检查滚动条的值并使用它来确定位置.
此外,是否有更好的方式来显示控件列表?我应该使用Panel吗?
嘿伙计们,我总是遇到一个问题,即类中的Public变量的名称和我传递给相同类构造函数的参数之间的相似性.
在定义对象的新实例时,例如Car.用户/程序员唯一能看到的是它所寻找的参数的名称和类型.
例如:
public Car(Color BodyColor, int NumOfDoors, int SizeOfWheels)
{
}
Run Code Online (Sandbox Code Playgroud)
用户将看到这些名称和类型,并且只能根据其类型和名称知道它们是什么,从而排除任何xml摘要标记.
现在,我们总是希望我们的公共变量也非常具体.
例如:
public Color BodyColor { get; set; }
public int NumOfDoors { get; set; }
public int SizeOfWheels { get; set; }
Run Code Online (Sandbox Code Playgroud)
现在,我们可以回答我的问题.使用这些单行属性,而不是定义变量的私有实例并为其创建属性,如何使这些变量名称更清晰?
我正在尝试使用其他用户可以理解且易于阅读的命名约定.
现在构造函数看起来像
public Car(Color BodyColor, int NumOfDoors, int SizeOfWheels)
{
this.BodyColor = BodyColor;
this.NumOfDoors = NumOfDoors;
this.SizeOfWheels = SizeOfWheels;
}
Run Code Online (Sandbox Code Playgroud)
这是其他C#程序员写的吗?是否存在已存在的命名约定?乍一看,上面的陈述看起来有点乱,特别是如果你省略了this.
我目前正在使用 VB.Net 读取文本文件
Dim fileReader As String
fileReader = My.Computer.FileSystem.ReadAllText(file)
Run Code Online (Sandbox Code Playgroud)
文件包含多行文本,当我读入文本文件时,它知道它们在不同的行上并相应地将它们打印出来。
但是,当我尝试将 fileReader 拆分为不同行的数组时,即使我使用Split(ControlChars.Cr)或Split(ControlChars.NewLine). 它会成功地将其拆分为单独的行,但是当我显示它时,它会将文本“推”下一行,就像换行符仍然存在一样......
有没有人对正在发生的事情以及如何删除这些“隐形”控制字符有任何想法。
文本文件:
测试1
的Test2
Test3的
TEST4
文件阅读器:
测试1
的Test2
Test3的
TEST4
行()打印输出
测试1
的Test2
Test3的
TEST4
可能的重复:
是否可以在 C# 中创建一个新的运算符?
我想知道是否有可能创建自定义运算符,例如if (a atleast 5)在 C# 中。
上述声明如下:if a is at least 5 then do this.
我正在寻找更多关键字类型运算符,例如typeofor is。
如何让我的replace_char函数正常工作?
我在下面的函数中尝试它的方式使用Ubuntu中的gcc返回分段错误.
我尝试过其他方法,但每次尝试更改值时,都会出错.
int main (void)
{
char* string = "Hello World!";
printf ("%s\n", string);
replace_char(string, 10, 'a');
printf ("%s\n", string);
}
void replace_char(char str[], int n, char c)
{
str[n] = c;
}
Run Code Online (Sandbox Code Playgroud) c# ×8
.net ×2
arrays ×1
breakpoints ×1
c ×1
character ×1
constructor ×1
events ×1
exception ×1
file-io ×1
keyword ×1
namespaces ×1
object ×1
operators ×1
panel ×1
powerpoint ×1
process ×1
properties ×1
replace ×1
string ×1
vb.net ×1
vba ×1