我正在尝试使旧方法异步。
它从数据库中获取 BLOB 并将其作为文件写入磁盘。
但是,没有异步版本的BinaryWriter
.
我可以用StreamWriter
代替吗?因为它有WriteAsync
方法。有什么区别?有什么缺点吗?
部分代码:
OracleParameter returnParam = new OracleParameter("blob", OracleDbType.Blob);
command.Parameters.Add(returnParam);
await command.ExecuteNonQueryAsync();
OracleBlob blob = returnParam.Value as OracleBlob;
byte[] data = new byte[blob.Length];
await blob.ReadAsync(data, 0, Convert.ToInt32(blob.Length));
fileFullPath = Path.Combine(folder, fileName);
using (FileStream fs = new FileStream(fileFullPath, FileMode.OpenOrCreate, FileAccess.Write))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
bw.Write(data); //NO ASYNC METHOD HERE
logger.Debug("Finished writing file {0} to disk", fileFullPath);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以改成下面这样吗?
OracleParameter returnParam = new OracleParameter("blob", OracleDbType.Blob);
command.Parameters.Add(returnParam);
await …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 C# 代码转换为 Visual Basic。
这是 C# 代码:
public static string RequestServer1(string methodName, List<string> parameters)
{
return RequestServer(methodName, parameters.Select(p => new JValue(p)).ToList<JToken>());
}
Run Code Online (Sandbox Code Playgroud)
这是 VB.Net 代码:
Public Shared Function RequestServer(ByVal methodName As String, ByVal parameters As List(Of String)) As String
Return RequestServer(methodName, parameters.Select(Function(p) New JValue(p)).ToList())
End Function
Run Code Online (Sandbox Code Playgroud)
这里的功能是List(Of JToken)
:
Public Shared Function RequestServer(ByVal methodName As String, ByVal parameters As List(Of JToken)) As JToken
Dim ServerIp As String = "http://localhost:8332"
Dim UserName As String = "hama"
Dim Password As …
Run Code Online (Sandbox Code Playgroud) 所以我将一些代码从VB.NET迁移到C#,但是当它在C#中进行字节解析时失败了.
这是VB.NET代码可以工作:
Dim sModifiedAccountNumber_AsciiHex
Dim iByte As Byte = 0
Dim iIdx As Integer = 0
Dim strByte As String = String.Empty
sModifiedAccountNumber_AsciiHex = "FC13"
For iIdx = 1 To 3 Step 2
iByte = CByte("&H" & Mid$(sModifiedAccountNumber_AsciiHex, iIdx, 2))
If iByte >= 120 And iByte <= 127 Then
iByte = iByte Or &H80
strByte = Hex$(iByte)
Do While Len(strByte) < 2
strByte = "0" & strByte
Loop
Mid$(sModifiedAccountNumber_AsciiHex, iIdx, 2) = strByte
End If
Next
Run Code Online (Sandbox Code Playgroud)
C#版本:
string modAccountNumberAsciiHex = …
Run Code Online (Sandbox Code Playgroud) 我必须处理一些包含西里尔文本的文件,我在Visual Studio 2012 Ultimate中使用StreamReader
/ StreamWriter
.
然而,有一些荒谬的问题(或我的误解).以下构造函数工作得很好:
using (StreamReader reader = new StreamReader(someFile, Encoding.Default)){
}
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试以下内容时:
using (StreamWriter writer = new StreamWriter(someOtherfile, Encoding.Default)){
}
Run Code Online (Sandbox Code Playgroud)
我得到一个ivalid构造函数的编译时错误.然而,以下是MSDN的规范:
public StreamWriter(Stream stream, Encoding encoding);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
前两个语句以给定的数字输入运行,但第三个语句不运行.
#include <iostream>
using namespace std;
int main()
{
double X;
cout << "Please pick a number from -10 to 10";
cin >> X;
if ((-3 <= X)&&( X <= 2))
cout << "Y = " << ( X * X) + (2 * X) -3 << endl;
else if ((2 < X)&&(X <= 10))
cout << "Y = " << (5 * X) + 7 << endl;
else if ((X > 10)&&(X < -3))
cout << "Y = " …
Run Code Online (Sandbox Code Playgroud) 最近两天我一直在做一个简短的项目,但是现在一切都崩溃了, 因为有一个方程在C ++ / C#程序中计算时返回8.660254,但是当您尝试手动或使用计算器计算时返回0。
方程:
float mgr1 = (x + tr * 0.5f - tr / 2) * 1.73205f * 10.0f;
Run Code Online (Sandbox Code Playgroud)
就我而言:
x = 0;
tr = 1;
float mgr1 = (0 + 1 * 0.5f - 1 / 2) * 1.73205f * 10.0f;
Run Code Online (Sandbox Code Playgroud)
正确的结果是,0
但是用C ++计算时,它返回8.660254
?我要疯了吗?关于C ++,我有不知道的东西吗?它是什么?
我想要类似的东西std::vector<int*> v
,但是在C#中。
我试过了List<int*> v
,但是编译器说
CS0306 C#类型不能用作类型参数
我想放置int
变量并通过数组更改它,例如C ++
std::vector<int*> v;
int a = 2;
v.push_back(&a);
v[0] = 4; // (a == 4) true
Run Code Online (Sandbox Code Playgroud) 我一直在尝试制作战舰游戏。这是我的第一次编码,所以我正在尝试学习最好和最有效的编写方式。
基本上,目前我的问题是我有一个名为A1
to 的字符串A10
,我有一些可以随机选择A1
-的代码A10
。我想发生的事情是当选择了一个坐标即时A5
,它将随后将的值更改A5
为X或H,但是我在执行此操作时遇到了问题。
我已经尝试过使用A1.Replace("0", "1")
它作为测试,但是它不起作用。
var A1 = "0";
var A2 = "0";
var A3 = "0";
var A4 = "0";
var A5 = "0";
var A6 = "0";
var A7 = "0";
var A8 = "0";
var A9 = "0";
var A10 = "0";
string[] DestroyerC = { "A1", "A2", "A3", "A4","A5","A6","A7",A8","A9",A10"};
// Create a Random object
Random rand = new Random();
// Generate a …
Run Code Online (Sandbox Code Playgroud) 我试图准确理解下面这段代码中发生的事情:
static void someMethod(int[] a) {
int[] b = new int[5];
a = b;
}
static void Main(string[] args) {
int[] arr = new int[10];
someMethod(arr);
Console.WriteLine(arr.Length);
}
Run Code Online (Sandbox Code Playgroud)
我无法解释的是为什么Console.Writeline()
打印 10 而不是 5。 C# 中的数组是引用类型,所以我认为该行将a = b
变量设置a
为指向int[5]
. 然而Console.Writeline(
) 打印 10。我无法解释数组的这种类似值类型的行为。有人可以解释一下吗?
我在语句中包含这两个条件if
来检查是x
偶数还是奇数,但似乎在偶数的情况下!(x&1)
执行了主体,而没有执行它。if
x
x&1==0
考虑到32 或 64 位表示中的1 & 0
is和 1 ,我希望两者都给出 0 ,并且如果,比如说,是类似(偶数)的东西,那么它们的按位 和 应该产生 0。因此,我仍然不确定为什么有效。如果我有任何错误的地方,请纠正我。谢谢。0
000..01
x
10010101100
!(x&1)
有没有办法在字符串值中进行比较可以返回Boolean
值.例.如果(5> 5000)显然会返回假值.但我想做的是让"5> 5000"返回假值.
例.
string com = "5 > 10";
Run Code Online (Sandbox Code Playgroud)
那么有没有办法让这个com
变量返回一个false
值,好像它是整数之间的比较.
所以,对于我的第一个 C 项目,我想从一个简单的计算器开始,但函数SUM
所做的只是 return 0.00000
。
#include <stdio.h>
int SUM (float n1, float n2);
int main() {
float num1 = 0;
float num2 = 0;
float res = 0;
scanf("Enter 2 numbers: %f %f", &num1, &num2);
res = SUM(num1, num2);
printf ("%f", res);
}
int SUM (float n1, float n2) {
float sum = n1+n2;
return ∑
}
Run Code Online (Sandbox Code Playgroud) c# ×9
c++ ×3
.net ×2
streamwriter ×2
vb.net ×2
arrays ×1
async-await ×1
binary-data ×1
boolean ×1
c ×1
c++11 ×1
c++17 ×1
comparison ×1
equation ×1
json-rpc ×1
numbers ×1
streamreader ×1
string ×1