我发现一些代码,这是为了通话__uuidof(IMyInterface)
,但实际上是调用__uuidof(pIMyInterface)
其中pIMyInterface
的类型的指针IMyInterface
。__uuidof
调用值而不是类型时的行为如何?
例如int x=123; __uuidof(x)
,这是否等于__uuidof(int)
或__uuidof(123)
为了编写一些虚拟存储过程,我想知道我是否可以用C#编写它们,因为我不太了解T-SQL.
相同过程的C#和T-SQL版本是否与使用标准数据库库类调用代码(例如C++/C#/ Java代码)无法区分?
我使用GroupBy
的是匿名类型:
var v = list.GroupBy(x => new {x.street, x.houseNumber});
var o = v.Single(x => x.Key.street == "My Street" && x.Key.houseNumber == 42);
Run Code Online (Sandbox Code Playgroud)
它运作得很好.我决定把它变成一个具体的类型:
class StreetAddress
{
public StreetAddress(string _street,int _houseNumber){...}
public string street{get; set;}
public int houseNumber{get;set;}
}
var v = list.GroupBy(x => new StreetAddress(x.street, x.houseNumber));
var o = v.Single(x => x.Key == new StreetAddress("My Street", 42));
Run Code Online (Sandbox Code Playgroud)
现在'v'根本没有分组 - 具有相同Key
值的项目的加载,并且o
不匹配任何对象.
我需要添加什么才能StreetAddress
像匿名类型那样工作?
我正在编写代码,使用反射将一个对象转换为另一个对象...
它正在进行中,但我认为它将归结为以下我们相信两个属性具有相同的类型:
private void CopyPropertyValue(object source, string sourcePropertyName, object target, string targetPropertyName)
{
PropertyInfo sourceProperty = source.GetType().GetProperty(sourcePropertyName);
PropertyInfo targetProperty = target.GetType().GetProperty(targetPropertyName);
targetProperty.SetValue(target, sourceProperty.GetValue(source));
}
Run Code Online (Sandbox Code Playgroud)
但是我还有一个额外的问题,即源类型可能是Nullable而目标类型不是.例如Nullable<int>
=> int
.在这种情况下,我需要确保它仍然有效,并执行一些明智的行为,例如NOP或设置该类型的默认值.
这看起来像什么?
alter table report add favourite_film VARCHAR2(100) DEFAULT 'Star Wars';
这会添加一个具有默认值的新列,但在我看来,它还会在所有预先存在的行上设置默认值,而不是将它们保留为空,这是我的偏好。为了方便起见,我们希望添加一个具有默认值的新列,但添加此列之前的行应该具有空值。
null
有没有比简单地在添加新列后立即将所有行的值设置为更好的方法?
我可以推出一个方法,伪:
bool Compare(IList left, int lIndex, IList right, int rIndex, int num)
{
for(int i=0;i<num;++i)
{
if(left[lIndex+i] != right[rIndex+i])
{
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
所以给出L =[1,2,3,4,5,6,7,8]
和R = [5,6,7,8,9]
:Compare(L,5,R,1,3) == true
我觉得我应该能够做一个简单的 LINQ 版本,但我不确定如何处理索引。它可以写成一个简单的 LINQ/lambda 吗...否则我会把它作为一个实用方法。
顺便说一下,有一个标题非常相似的问题,但它提出了不同的问题:https : //stackoverflow.com/questions/33812323/compare-two-arrays-using-linq
我使用NetworkStream
带TcpClient
。
首先我设置我的 tcp 客户端:
tcp = new TcpClient(AddressFamily.InterNetwork)
{ NoDelay = true, ReceiveTimeout = 5000};
Run Code Online (Sandbox Code Playgroud)我的主要数据接收循环:
while (true)
{
//read available data from the device
int numBytesRead = await ReadAsync();
Console.WriteLine($"{numBytesRead} bytes read"); //BP2
}
Run Code Online (Sandbox Code Playgroud)和实际的 TCP 数据读取:
public Task<int> ReadAsync()
{
var stream = tcp.GetStream();
return stream.ReadAsync(InBuffer, 0, InBuffer.Length); //BP1
}
Run Code Online (Sandbox Code Playgroud)我将它连接到一个测试平台,让我可以发送手动数据包。通过设置断点和调试,我检查了stream.ReadTimeout
从tcp
.
如果我经常发送数据,它会按预期工作。但是如果我不发送任何数据,5 秒后似乎什么也没有发生,没有超时。我看到BP1
在调试器中断点被击中,但直到我从我的测试平台发送数据,才被BP2
击中。我可以离开它一分钟或更长时间,它似乎只是在等待,但在一分钟后接收发送的数据,这似乎是不正确的行为。5 秒后肯定会发生一些事情(据我所知是一个例外)?
太晚了,所以我期待一些非常基本的东西,但谁能看到我的错误和解决方案?
好的,所以当我对我正在使用的实际 .Net 版本进行 RTFM 时(我有多少次被默认为 .Net …
string o=null;
Console.WriteLine($"Hello World '{o}'");
Run Code Online (Sandbox Code Playgroud)
这输出:
你好世界 ''
我想明确地为空值写“null”。
string o=null;
Console.WriteLine($"Hello World '{o??"null"}'");
Run Code Online (Sandbox Code Playgroud)
这就是这样做的:
你好世界“空”
但如果o
不是类型string
(或Object
),则会生成编译错误。例如:
Array o=null;
Console.WriteLine($"Hello World '{o??"null"}'");
Run Code Online (Sandbox Code Playgroud)
编译错误运算符'??' 不能应用于“Array”和“string”类型的操作数
达到预期结果的最佳方法是什么?遗憾的是您无法修改$
句柄的方式null
,因为它似乎是硬编码的使用方式String.EmptyString
c# null conditional-operator null-coalescing-operator string-interpolation
我正在查看一些第三方代码,我不确定一行是做什么的.我无法发布确切的代码,但它是:
bool function(float x)
{
float f = doCalculation(x);
return x > 0 ? f : std::numeric_limits<float>::infinity();
}
Run Code Online (Sandbox Code Playgroud)
这显然会引发编译器关于转换float-> bool的警告,但实际行为是什么?Visual C++如何将浮动转换为bools?至少我应该能够取代那令人讨厌的无限......
对于使用C++开发的规则引擎,其中一个核心功能是值类型.到目前为止,我有点像COM风格的VARIANT - 每个值都知道它的类型.类型转换有一些规则,但它有点乱.
我想知道是否有可以使用的好的插入值类来解决这个问题,而不需要我使用整个预构建的系统.比如说升压有什么意义吗?
c# ×6
c++ ×3
.net ×2
linq ×2
visual-c++ ×2
null ×1
oracle ×1
reflection ×1
sql ×1
sql-server ×1
tcpclient ×1
variant ×1