我在C#中有两个对象,不知道它是布尔值还是其他任何类型.但是,当我尝试比较那些C#未能给出正确答案时.我用VB.NET尝试了相同的代码并且做到了!
如果有解决方案,谁能告诉我如何解决这个问题?
C#:
object a = true;
object b = true;
object c = false;
if (a == b) c = true;
MessageBox.Show(c.ToString()); //Outputs False !!
Run Code Online (Sandbox Code Playgroud)
VB.NET:
Dim a As Object = True
Dim b As Object = True
Dim c As Object = False
If (a = b) Then c = True
MessageBox.Show(c.ToString()) '// Outputs True
Run Code Online (Sandbox Code Playgroud) 我经常在我的代码中使用null传播运算符,因为它给了我更多可读代码,特别是在长查询中我不必对每个使用的类进行空值检查.
以下代码抛出一个编译错误,我们不能在lambda中使用null传播运算符.
var cnt = humans.AsQueryable().Count(a => a.House?[0].Price == 5000);
Run Code Online (Sandbox Code Playgroud)
错误 :
错误CS8072表达式树lambda可能不包含空传播运算符.
C#如果真的不能做任何其他事情,可以轻松地将上面的代码转换为代码到下面的代码!
var cnt = humans.AsQueryable().Count(a => a.House != null && a.House[0].Price == 5000);
Run Code Online (Sandbox Code Playgroud)
我很好奇为什么C#什么也不做,只是抛出一个编译器错误?
我正在寻找的代码如下.
bool Func1(int Arg1, C++11LambdaFunc Arg2){
if(Arg1 > 0){
return Arg2(Arg1);
}
}
Run Code Online (Sandbox Code Playgroud)
稍后我将使用此代码.
Func1(12, [](int D) -> bool { ... } );
Run Code Online (Sandbox Code Playgroud) 以下行有错误Default argument is not allowed.
public ref class SPlayerObj{
private:
void k(int s = 0){ //ERROR
}
}
Run Code Online (Sandbox Code Playgroud)
为什么C++在托管类型上没有默认参数?
我想知道是否有办法解决这个问题.
var xrr = __arglist(Convert.ToUInt32(1),
Convert.ToUInt32(2),
Convert.ToUInt32(3));
Run Code Online (Sandbox Code Playgroud)
上面的代码会使编译器在构建时崩溃.我希望编译器停止使用有意义的错误消息,而不是尝试编译代码.它可能是编译器中的错误吗?如果没有,我该如何解决这个错误?
假设我们有以下代码:
struct Article
{
public string Prop1 { get; set; }
}
Article? art = new Article();
art?.Prop1 = "Hi"; // compile-error
Run Code Online (Sandbox Code Playgroud)
编译错误是
CS0131赋值的左侧必须是变量,属性或索引器.
实际上art?.Prop1是一个属性,应该被视为一个有效的任务!
我没有看到任何分配使这段代码无效的问题.
为什么C#6.0不允许设置非null可空结构的属性?
或者,任何建议一个行代码使分配有效将不胜感激.
我曾经用TryParse字符串解析数字.我需要一个解决方案来初始化变量的默认值,所以当TryParse无法转换时,我得到我的默认值.
这是代码:
long.TryParse(input.Code, out long Code = 123);
//Error CS1525 Invalid expression term '='
Run Code Online (Sandbox Code Playgroud)
我想严格使用C#7输出变量标准.
我正在使用以下代码与C++ 11并得到一个我不允许使用的错误typeof!
有什么问题以及如何解决这个问题?
错误 :
Error 10 error C2923: 'typeof' is not a valid template type argument for parameter 'C'
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
#define HIBERLITE_NVP(Field) hiberlite::sql_nvp< typeof(Field) >(#Field,Field)
class Person{
friend class hiberlite::access;
template<class Archive>
void hibernate(Archive & ar)
{
ar & HIBERLITE_NVP(name); //ERROR
ar & HIBERLITE_NVP(age); //ERROR
ar & HIBERLITE_NVP(bio); //ERROR
}
public:
string name;
double age;
vector<string> bio;
};
Run Code Online (Sandbox Code Playgroud)
sql_nvp是这样的:
template<class C>
class sql_nvp{
public:
std::string name;
C& value;
std::string search_key;
sql_nvp(std::string _name, C& _value, std::string search="") : …Run Code Online (Sandbox Code Playgroud) 根据以下链接和我的控制台应用程序,该方法DrawToBitmap不尊重不透明度.
证明链接:http: //social.msdn.microsoft.com/Forums/vstudio/en-US/e9704309-0c52-442d-80e0-2f8393dcd313/webbrowser-opacity-problem-
我的HTML代码:http://fiddle.jshell.net/L37TC/
<div id="fader" style="background-color: #ff0000">ffff</div>
<div style="background-color: blue; opacity:0;filter:alpha(opacity=0);">HIDDEN TEXT!</div>
SomeText
Run Code Online (Sandbox Code Playgroud)
我的C#控制台代码:
var bmp = new Bitmap(640,480, PixelFormat::Format32bppArgb)
var web = (System.Windows.Forms.Control)sender;
web.DrawToBitmap(bmp, Rectangle(0, 0, 640,480));
Run Code Online (Sandbox Code Playgroud)
所以我正在寻找替代的.NET内置解决方案(没有CEF,Awesomium,或任何扩展请)只是.NET的内置功能来修复错误或替代解决方案,以在我的控制台中截取Web URL的屏幕截图应用.
如果我让WebBrowser窗口对我的客户端可见并且使用CopyFromScreen不透明度并且HIDDEN TEXT没有显示,那么我怎么不想让WebBrowser窗口对桌面屏幕可见.
我正在寻找一个内置的解决方案,可以在没有问题的情况下从发布的URL中截取屏幕截图HIDDEN TEXT.换句话说,是尊重opacity的解决方案.
EDIT1:我的所有像素Bitmap class(.NET类不是BMP格式)的alpha值为255.所以问题不在于文件格式.我尝试过PNG和任何其他.NET支持的格式.
完整的源代码(控制台模板,需要添加引用System.Drawing和System.Windows.Forms
class Program
{
static System.Windows.Forms.WebBrowser w = new System.Windows.Forms.WebBrowser();
[STAThread]
static void Main(string[] args) …Run Code Online (Sandbox Code Playgroud) 有没有办法在Visual Studio中锁定或冻结部分代码以防止格式化?
我想保护以下代码:
Method("This is a long text", 12 , true );
Method("Hi", 558, true );
Method("Short text", 1 , false );
Run Code Online (Sandbox Code Playgroud)
格式化为:
Method("This is a long text", 12, true);
Method("Hi", 558, true);
Method("Short text", 1, false);
Run Code Online (Sandbox Code Playgroud)
但仍然能够格式化文档的其余部分.
c# ×7
.net ×4
vb.net ×3
visual-c++ ×3
c#-6.0 ×2
c++ ×2
c++11 ×2
c#-7.0 ×1
c++-cli ×1
comparison ×1