我想用来将StreamWriter文件写入临时文件夹.
它可能是每台PC上不同的路径,所以我尝试使用%temp%\SaveFile.txt但它没有用.
如何使用环境变量保存到临时文件夹?
例如,我可以使用环境变量来存储文件%appdata%吗?
我有这段代码:
Random rand = new Random();
int chance = rand.Next(1, 101);
if (chance <= 25) // probability of 25%
{
Console.WriteLine("You win");
}
else
{
Console.WriteLine("You lose");
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,它真的计算出25%的获胜概率吗?这里玩家获胜的机会是25%吗?
编辑:
我刚刚写了这个:
double total = 0;
double prob = 0;
Random rnd = new Random();
for (int i = 0; i < 100; i++)
{
double chance = rnd.Next(1, 101);
if (chance <= 25) prob++;
total++;
}
Console.WriteLine(prob / total);
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
这是非常不准确的.它从大约0.15到0.3.
但是当我做更多的检查(从(i <100)变为(i <10000))时,它会更准确.
为什么是这样?为什么100次检查不够准确?
我是C#程序员已经有几个月了,最近我一直在考虑学习C++.
所以我的问题是,C++无法做到C++所能做的事情吗?
我知道C++中的手动内存管理,但只要我不编写操作系统或非常繁重的内存应用程序,我就不要太担心(因为我听说.NET处理自动内存管理非常好).
但是,我可以在C#中编写C#中的所有内容吗?我还指DLL注入,注册表编辑,驱动程序等类似的东西.
C#被认为和C++一样强大吗?如果没有,那么C#不能做什么呢?
我现在正在用 C#(这是一个控制台应用程序)制作一个游戏,它的变量需要保存。
我试过使用设置,但有一个大问题:如果文件名被更改或文件被转移到其他地方,设置就会丢失。
那么什么是用于保存变量并稍后在应用程序中检索它们的设置的好的替代方法?
编辑:我想将变量保存到文本文件并稍后检索,这可能吗?如果是,那么如何?
并且请不要推荐在线服务器,因为我正在开发单人游戏,而不会跟踪任何玩家。
我用C#编写了这个:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Object
{
class Program
{
int hp;
Program mob1 = new Program();
Program player = new Program();
static void Main(string[] args)
{
Program go = new Program();
go.next();
}
public void next()
{
mob1.hp = 50;
player.hp = 100;
Console.WriteLine("Player's HP: " + player.hp);
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序时,我得到一个Stack Overflow异常,程序就崩溃了.异常发生在第一个对象mon的声明中.
为什么是这样?我怎么解决它?
我正在制作一个Web Crawler,我发现我的一个方法GetHTML非常慢,因为它使用StreamReader从HttpWebResponse对象中获取HTML字符串.
这是方法:
static string GetHTML(string URL)
{
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(URL);
Request.Proxy = null;
HttpWebResponse Response = ((HttpWebResponse)Request.GetResponse());
Stream RespStream = Response.GetResponseStream();
return new StreamReader(RespStream).ReadToEnd(); // Very slow
}
Run Code Online (Sandbox Code Playgroud)
我用秒表进行了测试,并在YouTube上使用了这种方法.
Time it takes to get an HTTP response: 500 MS
Time it takes to convert the HttpWebResponse object to a string: 550 MS
Run Code Online (Sandbox Code Playgroud)
所以HTTP请求很好,只是ReadToEnd()这么慢.
是否有任何替代ReadToEnd()方法从响应对象中获取HTML字符串?我尝试使用WebClient.DownloadString()方法,但它只是一个使用流的HttpWebRequest的包装器.
编辑:尝试使用套接字,它更快:
static string SocketHTML(string URL)
{
string IP = Dns.GetHostAddresses(URL)[0].ToString();
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect(new IPEndPoint(IPAddress.Parse(IP), 80));
s.Send(Encoding.ASCII.GetBytes("GET / HTTP/1.1\r\n\r\n")); …Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×2
c++ ×1
io ×1
memory ×1
object ×1
path ×1
percentage ×1
performance ×1
probability ×1
save ×1
stream ×1
streamreader ×1
variables ×1