我不确定如何说出问题,但我想通过代码,因为它通过.NET类/方法等.
之前我曾询问如何查看.NET库中类的代码,最后我得到了.NET Reflector,我很快就下载了.现在,作为一个例子,我正在寻找更多信息.
我的程序中有一个方法,如下所示:
public bool DoThisJob(string job)
{
if (jobsICanDo.Contains(job))
return true;
}
Run Code Online (Sandbox Code Playgroud)
jobsICanDo是包含不同作业的字符串数组.
当我执行该代码时,"包含(作业)"方法,我希望能够逐步完成代码,因为它一直通过返回结果的.NET库和类.
简而言之,我是一个菜鸟,我想了解所有的图书馆是如何工作的.我不只是想接受它的工作并继续前进.
我的具体问题是,我有.NET Reflector,可以查看所有.NET库中的代码,有没有办法让我真正看到这些代码在运行中并观察我的输入遍历.NET库和类?
编辑对于我正在寻找的内容,似乎至少有一些混乱.我在if(jobsICanDo.Contains(job))设置断点.我运行我的程序,它做了它的事情,当它到达那里它停止.当进入下一行代码时,它只返回true并继续前进.我想要做的是看看Contains方法正在做什么,就像我的其余代码一样.
我正在研究一些东西,并在buildstarted.com上看到关于模型粘合剂的博客文章.它实际上对我的目的来说非常好,但我不确定幕后会发生什么.我做的是创建一个名为的自定义ModelBinder USerModelBinder:
public class UserModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
ValueProviderResult value = bindingContext.ValueProvider.GetValue("id");
MyEntities db = new MyEntities();
User user = db.Users.SingleOrDefault(u => u.UserName == value.AttemptedValue);
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的Global.asax.cs我:
ModelBinders.Binders.Add(typeof(User), new UserModelBinder());
我的理解是使用模型绑定器允许我不必在涉及"用户"的每个控制器动作中使用以下行.因此,模型绑定器不会将"id"传递给动作,而是截取id,获取正确的"item"(在我的情况下为User)并将其转发给动作进行处理.
MyEntities db = new MyEntities();
User user = db.Users.SingleOrDefault(u => u.UserName == value.AttemptedValue);
Run Code Online (Sandbox Code Playgroud)
我也尝试在我的User类上使用注释,而不是使用Global.asax.cs中的行:
[ModelBinder(typeof(UserModelBinder))]
public partial class User
{
}
Run Code Online (Sandbox Code Playgroud)
我不是在寻找30页的白皮书,但我不知道模型绑定器是如何做到的.我只是想了解从发出请求到发送请求的时间会发生什么.所有这些"只是工作"的东西对我来说是不能接受的,哈哈.另外,使用注释与在Global.asax.cs中添加它有什么区别吗?它们似乎在我的测试中工作相同,但有任何陷阱吗?
我在下面有以下代码,它解析文本文件并索引单词和行:
bool Database::addFromFileToListAndIndex(string path, BSTIndex* & index, list<Line *> & myList)
{
bool result = false;
ifstream txtFile;
txtFile.open(path, ifstream::in);
char line[200];
Line * ln;
//if path is valid AND is not already in the list then add it
if(txtFile.is_open() && (find(textFilePaths.begin(), textFilePaths.end(), path) == textFilePaths.end())) //the path is valid
{
//Add the path to the list of file paths
textFilePaths.push_back(path);
int lineNumber = 1;
while(!txtFile.eof())
{
txtFile.getline(line, 200);
ln = new Line(line, path, lineNumber);
if(ln->getLine() != "")
{
lineNumber++; …Run Code Online (Sandbox Code Playgroud) 我可以使用任务管理器来检测巨大的内存泄漏吗?我有一个小文本解析程序,当我启动它时显示大约640K的内存使用量.当我解析文件并将其编入索引时,内存使用量会根据文件的大小而增加.然后当我"清除"索引时,我的内存使用率下降到1400K左右.在此之后,我可以添加任意数量的文件,当我清除索引时,内存使用量下降到1400k级别+或--a~5%.
这是在我改变程序之后.在更改之前,每次我索引一些文件然后清除时,内存使用量将继续增加.因此,经过多次清理后,我的程序的内存使用量不断增长.
我意识到这可能是一种"hackish"方式来描述我的应用程序,但我是一名学生,我所能找到的是商业性能分析工具,这是遥不可及的.我也读过关于valgrind的内容,这只是linux而且我正在开发Windows.完全使用任务管理器还是我被误导了?
我正在阅读"Head First C#"一书,在其中一章我创建了一个程序,并使用声明为整数和小数的变量.Visual Studio对我进行了几次关于混合和匹配两者的问题.例如:
dinnerParty.NumberOfPeople = (int) numericUpDown1.Value;
Run Code Online (Sandbox Code Playgroud)
NumberOfPeople被声明为int,显然数字更新是小数.
此外,当将这些数字添加到一起时,该书会将M放在一些数字之后.例如:
public void SetHealthyOption(bool healthy)
{
if (healthy)
{
CostOfBeveragesPerPerson = 5.00M;
}
else
{
CostOfBeveragesPerPerson = 20.00M;
}
}
Run Code Online (Sandbox Code Playgroud)
CostOfBeveragesPerPerson声明为小数.
所以我有两个具体问题:
1)你怎么知道什么时候需要施展什么?我敢肯定有很多东西可以铸造......有人能提供一些很好的链接来学习铸造吗?
2)数字后的M是什么?
编辑
所以M表示该数字是小数而不是双数.为什么不直接将数字转换为十进制数:(十进制)50.00?什么是"功能"叫什么?如果我想看看哪些"信件"可用,我会谷歌?
我希望能够在设置断点时跳过代码的某些部分.例如,我有一个代码块,它迭代52次以创建一副牌.这是正常工作,我宁愿不必按F11继续通过该块.反正我是否"跳过"这个以便调试器继续进行下一个方法调用?
语言和IDE是VS 2008中的C#.
.hgignore我的项目的根目录中有一个文件,它没有蹲下.当我这样做时hg add,我的项目目录中的每个文件都被添加和跟踪.无论我使用tortoisehg还是命令行,我都得到相同的结果.命令行是我的偏好.这里发生了什么?
我.hgignore(取自关于SO的另一个问题):
# use glob syntax
syntax: glob
*.obj
*.pdb
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
*.lib
*.sbr
*.scc
[Bb]in
[Dd]ebug*/
obj/
[Rr]elease*/
_ReSharper*/
[Tt]humbs.db
[Tt]est[Rr]esult*
[Bb]uild[Ll]og.*
*.[Pp]ublish.xml
*.resharper
Run Code Online (Sandbox Code Playgroud) 我正在构建一个小实用程序方法来解析一行(一个字符串)并返回所有单词的向量.我下面的istringstream代码工作正常,除非有标点符号,所以自然我的修复是想在通过while循环运行它之前"清理"该行.
我很感激在c ++中使用正则表达式库的一些帮助.我最初的解决方案是我们substr()并去镇上,但这似乎很复杂,因为我将不得不迭代并测试每个字符,看看它是什么,然后执行一些操作.
vector<string> lineParser(Line * ln)
{
vector<string> result;
string word;
string line = ln->getLine();
istringstream iss(line);
while(iss)
{
iss >> word;
result.push_back(word);
}
return result;
}
Run Code Online (Sandbox Code Playgroud) 我有两套,我正在尝试做一个联合(我在做交叉时得到同样的错误).这是错误:
error C3892: 'std::_Tree_const_iterator<_Mytree>::operator *' : you cannot assign to a variable that is const
Run Code Online (Sandbox Code Playgroud)
代码片段(如果我用 - >注释掉行,那么代码编译并且我的工作方式可以正常工作):
set<Line *>::iterator it;
set<Line *> * newSet = new set<Line *>();
leftLines = pLeft->getSet();
rightLines = pRight->getSet();
-->it = set_union(leftLines->begin(),leftLines->end(),rightLines->begin(), rightLines->end(), newSet->begin());
for(it = leftLines->begin(); it != leftLines->end(); it++)
{
newSet->insert(*it);
}
for(it = rightLines->begin(); it != rightLines->end(); it++)
{
newSet->insert(*it);
}
it = newSet->begin();
while(it != newSet->end())
{
result->insert(*it);
it++;
}
Run Code Online (Sandbox Code Playgroud)
我确定这是愚蠢的但我有点迷茫.我认为代码片段应该足够了,但我可以提供其他所需的东西.谢谢.
作为程序员,我们经常使用字符串.大多数时候,我使用它们而不会过多地考虑它们.最近,我一直在使用字符串从函数中返回大量信息而没有任何问题.我最新的例子是一个包含10个1000条目的二叉树.我有一个递归函数,只是在最后添加一个换行符字符串.这个功能毫无困难.
那么你可以在一个字符串中放入多少个字符,或者你只受可用内存量的限制,有什么"限制"吗?
c++ ×5
.net ×2
c# ×2
annotations ×1
breakpoints ×1
casting ×1
command-line ×1
debugging ×1
decimal ×1
hgignore ×1
integer ×1
intersection ×1
memory-leaks ×1
mercurial ×1
profiling ×1
regex ×1
set ×1
string ×1
tortoisehg ×1